Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
* @Jigsaw-Code/outline-dev
* @OutlineFoundation/outline-dev

/src/server_manager/model/ @fortuna
/src/shadowbox/ @fortuna
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Outline Server

![Build and Test](https://github.com/Jigsaw-Code/outline-server/actions/workflows/build_and_test_debug.yml/badge.svg?branch=master) [![Mattermost](https://badgen.net/badge/Mattermost/Outline%20Community/blue)](https://community.internetfreedomfestival.org/community/channels/outline-community) [![Reddit](https://badgen.net/badge/Reddit/r%2Foutlinevpn/orange)](https://www.reddit.com/r/outlinevpn/)
![Build and Test](https://github.com/OutlineFoundation/outline-server/actions/workflows/build_and_test_debug.yml/badge.svg?branch=master) [![Mattermost](https://badgen.net/badge/Mattermost/Outline%20Community/blue)](https://community.internetfreedomfestival.org/community/channels/outline-community) [![Reddit](https://badgen.net/badge/Reddit/r%2Foutlinevpn/orange)](https://www.reddit.com/r/outlinevpn/)

Outline Server is the component that provides the Shadowsocks service (via [outline-ss-server](https://github.com/Jigsaw-Code/outline-ss-server/)) and a service management API. You can deploy this server directly following simple instructions in this repository, or if you prefer a ready-to-use graphical interface you can use the [Outline Manager](https://github.com/Jigsaw-Code/outline-apps/).
Outline Server is the component that provides the Shadowsocks service (via [outline-ss-server](https://github.com/OutlineFoundation/tunnel-server/)) and a service management API. You can deploy this server directly following simple instructions in this repository, or if you prefer a ready-to-use graphical interface you can use the [Outline Manager](https://github.com/OutlineFoundation/outline-apps/).

**Components:**

- **Outline Server** ([`src/shadowbox`](src/shadowbox)): The core proxy server that runs and manages [outline-ss-server](https://github.com/Jigsaw-Code/outline-ss-server/), a Shadowsocks backend. It provides a REST API for access key management.
- **Outline Server** ([`src/shadowbox`](src/shadowbox)): The core proxy server that runs and manages [outline-ss-server](https://github.com/OutlineFoundation/tunnel-server/), a Shadowsocks backend. It provides a REST API for access key management.

- **Metrics Server** ([`src/metrics_server`](src/metrics_server)): A REST service for optional, anonymous metrics sharing.

Expand Down
2 changes: 1 addition & 1 deletion docs/shadowsocks.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@ The censors used to block Shadowsocks, but Shadowsocks has evolved, and in 2021,

In 2022 China started blocking seemingly random traffic ([report](https://www.opentech.fund/news/exposing-the-great-firewalls-dynamic-blocking-of-fully-encrypted-traffic/)). While there is no evidence they could detect Shadowsocks, the protocol ended up blocked.

As a reponse, we [added a feature to the Outline Client](https://github.com/Jigsaw-Code/outline-apps/pull/1454) that allows service managers to specify a **[connection prefix disguise](https://www.reddit.com/r/outlinevpn/wiki/index/prefixing/)** to be used in the Shadowsocks initialization, which can be used to bypass the blocking in China by making it look like a protocol that is allowed.
As a reponse, we [added a feature to the Outline Client](https://github.com/OutlineFoundation/outline-apps/pull/1454) that allows service managers to specify a **[connection prefix disguise](https://www.reddit.com/r/outlinevpn/wiki/index/prefixing/)** to be used in the Shadowsocks initialization, which can be used to bypass the blocking in China by making it look like a protocol that is allowed.

Shadowsocks remains our protocol of choice because it's simple, well understood and very performant. Furthermore, it has an enthusiastic community of very smart people behind it.
11 changes: 5 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/metrics_server/connection_metrics.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ const VALID_USER_REPORT2: HourlyUserConnectionMetricsReport = {

/*
* Legacy access key user reports to ensure backwards compatibility with servers not
* synced past https://github.com/Jigsaw-Code/outline-server/pull/1529).
* synced past https://github.com/OutlineFoundation/outline-server/pull/1529).
*/
const LEGACY_PER_KEY_USER_REPORT: HourlyUserConnectionMetricsReport = {
userId: 'foo',
Expand All @@ -43,7 +43,7 @@ const LEGACY_PER_KEY_USER_REPORT: HourlyUserConnectionMetricsReport = {

/*
* Legacy multiple countries user reports to ensure backwards compatibility with servers
* not synced past https://github.com/Jigsaw-Code/outline-server/pull/1242.
* not synced past https://github.com/OutlineFoundation/outline-server/pull/1242.
*/
const LEGACY_PER_LOCATION_USER_REPORT: HourlyUserConnectionMetricsReport = {
userId: 'foobar',
Expand Down
4 changes: 2 additions & 2 deletions src/server_manager/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Outline Manager

> THIS PROJECT HAS MOVED TO A [NEW LOCATION](https://github.com/Jigsaw-Code/outline-apps/tree/master/): Outline Manager is now part of the [Outline Apps repository](https://github.com/Jigsaw-Code/outline-apps).
> THIS PROJECT HAS MOVED TO A [NEW LOCATION](https://github.com/OutlineFoundation/outline-apps/tree/master/server_manager): Outline Manager is now part of the [Outline Apps repository](https://github.com/OutlineFoundation/outline-apps).

We are keeping this folder to support legacy versions of the app that point to the old [server install script](https://github.com/Jigsaw-Code/outline-server/blob/master/src/server_manager/install_scripts/install_server.sh).
We are keeping this folder to support legacy versions of the app that point to the old [server install script](https://github.com/OutlineFoundation/outline-server/blob/master/src/server_manager/install_scripts/install_server.sh).
4 changes: 2 additions & 2 deletions src/server_manager/install_scripts/install_server.sh
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ function fetch() {
function install_docker() {
(
# Change umask so that /usr/share/keyrings/docker-archive-keyring.gpg has the right permissions.
# See https://github.com/Jigsaw-Code/outline-server/issues/951.
# See https://github.com/OutlineFoundation/outline-server/issues/951.
# We do this in a subprocess so the umask for the calling process is unaffected.
umask 0022
fetch https://get.docker.com/ | sh
Expand Down Expand Up @@ -440,7 +440,7 @@ Make sure to open the following ports on your firewall, router or cloud provider
function set_hostname() {
# These are URLs that return the client's apparent IP address.
# We have more than one to try in case one starts failing
# (e.g. https://github.com/Jigsaw-Code/outline-server/issues/776).
# (e.g. https://github.com/OutlineFoundation/outline-server/issues/776).
local -ar urls=(
'https://icanhazip.com/'
'https://ipinfo.io/ip'
Expand Down
18 changes: 10 additions & 8 deletions src/shadowbox/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
# 1.7.2

- Fixes
- Fix reporting of country metrics and improve logging output (https://github.com/Jigsaw-Code/outline-server/pull/1242)
- Fix reporting of country metrics and improve logging output (https://github.com/OutlineFoundation/outline-server/pull/1242)

# 1.7.1

- Fixes
- Corner case of isPortUsed that could result in infinite restart loop (https://github.com/Jigsaw-Code/outline-server/pull/1238)
- Prevent excessive logging (https://github.com/Jigsaw-Code/outline-server/pull/1232)
- Corner case of isPortUsed that could result in infinite restart loop (https://github.com/OutlineFoundation/outline-server/pull/1238)
- Prevent excessive logging (https://github.com/OutlineFoundation/outline-server/pull/1232)

# 1.7.0

- Features
- Add encryption cipher selection to create access key API (https://github.com/Jigsaw-Code/outline-server/pull/1002)
- Make access key secrets longer (https://github.com/Jigsaw-Code/outline-server/pull/1098)
- Add encryption cipher selection to create access key API (https://github.com/OutlineFoundation/outline-server/pull/1002)
- Make access key secrets longer (https://github.com/OutlineFoundation/outline-server/pull/1098)
- Fixes
- Race condition on concurrent API calls (https://github.com/Jigsaw-Code/outline-server/pull/995)
- Upgrades (https://github.com/Jigsaw-Code/outline-server/pull/1211)
- Race condition on concurrent API calls (https://github.com/OutlineFoundation/outline-server/pull/995)
- Upgrades (https://github.com/OutlineFoundation/outline-server/pull/1211)
- Base image to `node:16.18.0-alpine3.16`
- outline-ss-server from 1.3.5 to [1.4.0](https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.4.0)
- outline-ss-server from 1.3.5 to [1.4.0](https://github.com/OutlineFoundation/outline-ss-server/releases/tag/v1.4.0)
- Prometheus from 2.33.5 to [2.37.1](https://github.com/prometheus/prometheus/releases/tag/v2.37.1)
8 changes: 4 additions & 4 deletions src/shadowbox/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Outline Server (Shadowbox)

The Outline Server, internal name "Shadowbox," is designed to streamline the setup and sharing of Shadowsocks servers. It includes a user management API and creates Shadowsocks instances when needed. It's managed by the [Outline Manager](https://github.com/Jigsaw-Code/outline-apps/) and used as proxy by the [Outline Client](https://github.com/Jigsaw-Code/outline-apps/) apps. Shadowbox is also compatible with standard Shadowsocks clients.
The Outline Server, internal name "Shadowbox," is designed to streamline the setup and sharing of Shadowsocks servers. It includes a user management API and creates Shadowsocks instances when needed. It's managed by the [Outline Manager](https://github.com/OutlineFoundation/outline-apps/) and used as proxy by the [Outline Client](https://github.com/OutlineFoundation/outline-apps/) apps. Shadowbox is also compatible with standard Shadowsocks clients.

## Installation

Expand All @@ -9,15 +9,15 @@ The Outline Server, internal name "Shadowbox," is designed to streamline the set
1. **Run the Installation Script**

```sh
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-apps/master/server_manager/install_scripts/install_server.sh)"
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/OutlineFoundation/outline-apps/master/server_manager/install_scripts/install_server.sh)"
```

1. **Customize (Optional)**

Add flags for hostname, port, etc. Example:

```sh
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-apps/master/server_manager/install_scripts/install_server.sh)" install_server.sh \
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/OutlineFoundation/outline-apps/master/server_manager/install_scripts/install_server.sh)" install_server.sh \
--hostname=myserver.com \
--keys-port=443
```
Expand Down Expand Up @@ -113,7 +113,7 @@ The Outline Server provides a REST API for access key management. If you know th

1. **Further Options:**

Consult the [OpenAPI spec](./server/api.yml) and [documentation](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/shadowbox/server/api.yml) for more options.
Consult the [OpenAPI spec](./server/api.yml) and [documentation](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/OutlineFoundation/outline-server/master/src/shadowbox/server/api.yml) for more options.

## Testing

Expand Down
2 changes: 1 addition & 1 deletion src/shadowbox/integration_test/client/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

# Alpine 3.19 curl is using the c-ares resolver instead of the system resolver,
# which caused DNS issues. Upgrade once the Alpine image includes the fix. See
# https://github.com/Jigsaw-Code/outline-server/pull/1566.
# https://github.com/OutlineFoundation/outline-server/pull/1566.
FROM docker.io/golang:1-alpine3.18

# curl for fetching pages using the local proxy
Expand Down
2 changes: 1 addition & 1 deletion src/shadowbox/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"dependencies": {
"ip-regex": "^4.1.0",
"js-yaml": "^3.12.0",
"outline-shadowsocksconfig": "github:Jigsaw-Code/outline-shadowsocksconfig#v0.2.0",
"outline-shadowsocksconfig": "github:OutlineFoundation/shadowsocksconfig#v0.2.0",
"prom-client": "^11.1.3",
"randomstring": "^1.1.5",
"restify": "^11.1.0",
Expand Down
2 changes: 1 addition & 1 deletion src/shadowbox/server/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ async function main() {

const prometheusPort = await portProvider.reserveFirstFreePort(9090);
// Use 127.0.0.1 instead of localhost for Prometheus because it's resolving incorrectly for some users.
// See https://github.com/Jigsaw-Code/outline-server/issues/341
// See https://github.com/OutlineFoundation/outline-server/issues/341
const prometheusLocation = `127.0.0.1:${prometheusPort}`;

const nodeMetricsPort = await portProvider.reserveFirstFreePort(prometheusPort + 1);
Expand Down
Loading