Panduan ini menjelaskan cara menggunakan Caddy, server web yang canggih dan mudah digunakan, untuk meningkatkan penyiapan server Outline Anda. Kemampuan HTTPS otomatis dan konfigurasi fleksibel Caddy menjadikannya pilihan yang sangat baik untuk menayangkan server Outline Anda, terutama saat menggunakan transpor WebSocket.
Apa itu Caddy?
Caddy adalah server web open source yang dikenal karena kemudahan penggunaannya, HTTPS otomatis, dan dukungan untuk berbagai protokol. Alat ini menyederhanakan konfigurasi server web dan menawarkan fitur seperti:
- HTTPS Otomatis: Caddy otomatis mendapatkan dan memperpanjang sertifikat TLS, sehingga memastikan koneksi yang aman.
- Dukungan HTTP/3: Caddy mendukung protokol HTTP/3 terbaru untuk traffic web yang lebih cepat dan lebih efisien.
- Dapat diperluas dengan Plugin: Caddy dapat diperluas dengan plugin untuk mendukung berbagai fungsi, termasuk reverse proxy dan load balancing.
Langkah 1: Prasyarat
- Mendownload dan menginstal
xcaddy
Langkah 2: Konfigurasi Domain
Sebelum memulai Caddy, pastikan nama domain Anda dikonfigurasi dengan benar untuk mengarah ke alamat IP server Anda.
- Tetapkan data A/AAAA: Login ke penyedia DNS dan tetapkan data A dan AAAA untuk domain Anda agar mengarah ke alamat IPv4 dan IPv6 server Anda.
Verifikasi data DNS: Pastikan data DNS Anda ditetapkan dengan benar menggunakan penelusuran resmi:
curl "https://cloudflare-dns.com/dns-query?name=DOMAIN_NAME&type=A" \ -H "accept: application/dns-json"
Langkah 3: Mem-build dan Menjalankan Build Caddy Kustom
Dengan xcaddy
, Anda dapat mem-build biner caddy
kustom yang menyertakan modul server
inti Outline dan modul ekstensi server lainnya yang diperlukan.
xcaddy build \
# The example uses a YAML config, so include a YAML config adapter module.
--with github.com/iamd3vil/caddy_yaml_adapter \
# The Outline core server module.
--with github.com/Jigsaw-Code/outline-ss-server/outlinecaddy
Langkah 4: Konfigurasi dan Jalankan Server Caddy dengan Outline
Buat file config.yaml
baru dengan konfigurasi berikut:
apps:
http:
servers:
server1:
listen:
- ":443"
routes:
- match:
- host:
- 'DOMAIN_NAME'
- path:
- "/TCP_PATH"
handle:
- handler: websocket2layer4
type: stream
connection_handler: ss1
- match:
- host:
- 'DOMAIN_NAME'
- path:
- "/UDP_PATH"
handle:
- handler: websocket2layer4
type: packet
connection_handler: ss1
outline:
shadowsocks:
replay_history: 10000
connection_handlers:
- name: ss1
handle:
handler: shadowsocks
keys:
- id: user-1
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
Konfigurasi ini mewakili strategi Shadowsocks-over-WebSockets dengan server web yang memproses di port 443
, menerima traffic yang digabungkan TCP dan UDP Shadowsocks di jalur TCP_PATH dan UDP_PATH.
Jalankan server Caddy yang diperluas dengan Outline menggunakan konfigurasi yang dibuat:
caddy run --config config.yaml --adapter yaml --watch
Anda dapat menemukan contoh konfigurasi lainnya di repo GitHub outline-ss-server/outlinecaddy.
Langkah 5: Buat Kunci Akses Dinamis
Buat file YAML kunci akses klien untuk pengguna menggunakan format konfigurasi lanjutan dan sertakan endpoint WebSocket yang sebelumnya dikonfigurasi di sisi server:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN_NAME/TCP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN_NAME/UDP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
Setelah membuat file YAML kunci akses dinamis, Anda harus mengirimkannya kepada pengguna. Anda dapat menghosting file di layanan hosting web statis atau membuatnya secara dinamis. Pelajari lebih lanjut cara menggunakan Kunci Akses Dinamis.
Langkah 6: Menghubungkan dengan Klien Outline
Gunakan salah satu aplikasi Outline Client resmi (versi 1.15.0+) dan tambahkan kunci akses dinamis yang baru dibuat sebagai entri server. Klik Connect untuk mulai melakukan tunneling ke server Anda menggunakan konfigurasi Shadowsocks-over-Websocket.
Gunakan alat seperti IPInfo untuk memverifikasi bahwa Anda sekarang menjelajahi internet melalui server Outline.