segfault/docker-compose.yml

411 lines
11 KiB
YAML
Raw Normal View History

2022-05-10 15:39:52 +00:00
version: "3.7"
2022-03-08 11:17:29 +00:00
services:
2022-08-02 10:07:05 +00:00
2022-10-08 08:30:59 +00:00
sf-redis:
image: redis
read_only: true
hostname: sf-redis
2022-08-02 10:07:05 +00:00
restart: ${SF_RESTART:-on-failure}
2022-10-08 08:30:59 +00:00
environment:
2022-10-11 12:51:11 +00:00
- SF_REDIS_AUTH=${SF_REDIS_AUTH}
2022-10-08 08:30:59 +00:00
networks:
redis-net:
ipv4_address: 172.20.2.254
# Should use "sfbin/sf up" to generate SF_REDIS_AUTH
2022-10-11 12:51:11 +00:00
command: [ "redis-server", "/redis.conf", "--save", "\"\"", "--appendonly", "no", "--requirepass", "${SF_REDIS_AUTH}" ]
2022-10-08 08:30:59 +00:00
volumes:
- "${SF_BASEDIR:-.}/config/etc/redis/redis.conf:/redis.conf:ro"
sf-encfsd:
build: encfsd
image: sf-encfsd
restart: ${SF_RESTART:-on-failure}
depends_on:
- sf-redis
2022-08-02 10:07:05 +00:00
cap_add:
- SYS_ADMIN
security_opt:
- apparmor:unconfined
environment:
2022-10-11 12:51:11 +00:00
- SF_REDIS_AUTH=${SF_REDIS_AUTH}
- SF_SEED=${SF_SEED}
2022-08-02 10:07:05 +00:00
- SF_DEBUG
2022-10-08 08:30:59 +00:00
command: ["/encfsd.sh"]
networks:
redis-net:
2022-08-02 10:07:05 +00:00
devices:
- "/dev/fuse:/dev/fuse"
volumes:
2022-10-08 08:30:59 +00:00
- "${SF_BASEDIR:-.}/data:/encfs/raw"
- "${SF_SHMDIR:-/dev/shm/sf}/encfs-sec:/encfs/sec:shared"
- "${SF_BASEDIR:-.}/sfbin:/sf/bin:ro"
2022-08-02 10:07:05 +00:00
2022-10-08 08:30:59 +00:00
sf-destructor:
build: encfsd
image: sf-encfsd
2022-08-01 12:38:28 +00:00
restart: ${SF_RESTART:-on-failure}
2022-10-08 08:30:59 +00:00
depends_on:
- sf-redis
2022-10-16 15:14:16 +00:00
- sf-encfsd
2022-08-01 12:38:28 +00:00
cap_add:
- SYS_ADMIN
security_opt:
- apparmor:unconfined
environment:
2022-10-11 12:51:11 +00:00
- SF_REDIS_AUTH=${SF_REDIS_AUTH}
2022-08-01 12:38:28 +00:00
- SF_DEBUG
2022-10-08 08:30:59 +00:00
pid: "service:sf-encfsd"
command: ["/destructor.sh"]
networks:
redis-net:
2022-08-01 12:38:28 +00:00
devices:
- "/dev/fuse:/dev/fuse"
volumes:
2022-10-08 08:30:59 +00:00
- "${SF_BASEDIR:-.}/data:/encfs/raw"
- "${SF_SHMDIR:-/dev/shm/sf}/encfs-sec:/encfs/sec:shared"
- "/var/run/docker.sock:/var/run/docker.sock"
- "${SF_BASEDIR:-.}/sfbin:/sf/bin:ro"
sf-portd:
build: encfsd
image: sf-encfsd
restart: ${SF_RESTART:-on-failure}
depends_on:
- sf-redis
environment:
2022-10-11 12:51:11 +00:00
- SF_REDIS_AUTH=${SF_REDIS_AUTH}
2022-10-08 08:30:59 +00:00
- SF_DEBUG
command: ["/portd.sh"]
networks:
redis-net:
volumes:
- "${SF_SHMDIR:-/dev/shm/sf}/self-for-guest:/config/self-for-guest"
- "/var/run/docker.sock:/var/run/docker.sock"
- "${SF_BASEDIR:-.}/sfbin:/sf/bin:ro"
2022-08-01 12:38:28 +00:00
2022-03-08 18:15:37 +00:00
dns-doh:
image: crazymax/cloudflared
2022-07-28 20:23:47 +00:00
restart: ${SF_RESTART:-on-failure}
2022-03-08 18:15:37 +00:00
networks:
dns-doh-net:
ipv4_address: 172.23.0.2
dnsmasq:
image: 4km3/dnsmasq:2.85-r2
2022-10-08 08:30:59 +00:00
restart: ${SF_RESTART:-on-failure}
depends_on:
- dns-doh
2022-03-08 18:15:37 +00:00
cap_add:
- NET_ADMIN
2022-07-28 13:33:08 +00:00
command: ["--no-resolv", "--domain-needed", "--server=172.23.0.2#5053", "--server=/onion/172.20.0.111#5353"]
2022-03-08 18:15:37 +00:00
networks:
2022-07-30 22:12:55 +00:00
vpn-net:
2022-09-28 09:49:46 +00:00
ipv4_address: 172.20.0.53
2022-03-08 18:15:37 +00:00
dns-doh-net:
2022-09-28 09:49:46 +00:00
ipv4_address: 172.23.0.53
2022-03-08 18:15:37 +00:00
guest-net:
2022-09-28 09:49:46 +00:00
ipv4_address: 10.11.255.53
2022-08-09 19:29:11 +00:00
access-net:
2022-09-28 09:49:46 +00:00
ipv4_address: 172.22.0.53
2022-03-08 18:15:37 +00:00
2022-09-28 09:49:46 +00:00
nordvpn:
image: hackerschoice/cryptostorm
2022-10-08 08:30:59 +00:00
container_name: sf-nordvpn
restart: ${SF_RESTART:-on-failure}
2022-07-25 12:42:33 +00:00
depends_on:
- dnsmasq
2022-10-08 08:30:59 +00:00
- sf-redis
2022-10-12 16:45:46 +00:00
- router
2022-09-28 09:49:46 +00:00
dns: 172.20.0.53
2022-07-25 12:42:33 +00:00
cap_add:
- NET_ADMIN #required
environment:
2022-07-27 14:26:03 +00:00
- PRIVATE_KEY=${SF_NORDVPN_PRIVATE_KEY:-}
2022-10-08 08:30:59 +00:00
- PROVIDER=NordVPN
- POST_UP=/sf/bin/vpn_wg2status.sh /sf/run/vpn/status-nordvpn.log up %i
- PRE_DOWN=/sf/bin/vpn_wg2status.sh /sf/run/vpn/status-nordvpn.log down %i
2022-07-30 22:12:55 +00:00
- RECONNECT=604800 # Re-Connect every 7 days
2022-10-11 12:51:11 +00:00
- SF_REDIS_AUTH=${SF_REDIS_AUTH}
2022-10-08 08:30:59 +00:00
- SF_DEBUG
2022-07-25 12:42:33 +00:00
networks:
2022-07-30 22:12:55 +00:00
vpn-net:
2022-07-25 12:42:33 +00:00
ipv4_address: 172.20.0.254
2022-10-08 08:30:59 +00:00
redis-net:
2022-07-25 12:42:33 +00:00
sysctls:
- net.ipv6.conf.all.disable_ipv6=1
2022-09-17 18:39:19 +00:00
- net.ipv4.conf.all.rp_filter=2
2022-07-30 22:12:55 +00:00
# - net.ipv4.conf.all.src_valid_mark=1
2022-07-25 12:42:33 +00:00
- net.ipv4.ip_forward=1
volumes:
2022-09-09 14:19:46 +00:00
- "${SF_SHMDIR:-/dev/shm/sf}/run/vpn:/sf/run/vpn" # Between all VPNs
- "${SF_SHMDIR:-/dev/shm/sf}/config-for-guest:/config/guest" # vpn_status to guest
2022-09-28 09:49:46 +00:00
- "${SF_BASEDIR:-.}/sfbin:/sf/bin:ro"
cryptostorm:
image: hackerschoice/cryptostorm
2022-10-08 08:30:59 +00:00
container_name: sf-cryptostorm
restart: ${SF_RESTART:-on-failure}
2022-09-28 09:49:46 +00:00
depends_on:
- dnsmasq
2022-10-08 08:30:59 +00:00
- sf-redis
2022-10-12 16:45:46 +00:00
- router
2022-09-28 09:49:46 +00:00
dns: 172.20.0.53
cap_add:
- NET_ADMIN #required
environment:
- CONFIG=${SF_CRYPTOSTORM_CONFIG:-}
2022-10-08 08:30:59 +00:00
- PROVIDER=CryptoStorm
2022-09-28 09:49:46 +00:00
- DNS=1.1.1.1 # Cryptostorm's DNS is often broken
2022-10-08 08:30:59 +00:00
- POST_UP=/sf/bin/vpn_wg2status.sh /sf/run/vpn/status-cryptostorm.log up %i
- PRE_DOWN=/sf/bin/vpn_wg2status.sh /sf/run/vpn/status-cryptostorm.log down %i
2022-09-28 09:49:46 +00:00
- RECONNECT=604800 # Re-Connect every 7 days
2022-10-11 12:51:11 +00:00
- SF_REDIS_AUTH=${SF_REDIS_AUTH}
2022-10-08 08:30:59 +00:00
- SF_DEBUG
2022-09-28 09:49:46 +00:00
networks:
vpn-net:
ipv4_address: 172.20.0.253
2022-10-08 08:30:59 +00:00
redis-net:
2022-09-28 09:49:46 +00:00
sysctls:
- net.ipv6.conf.all.disable_ipv6=1
- net.ipv4.conf.all.rp_filter=2
- net.ipv4.ip_forward=1
volumes:
- "${SF_SHMDIR:-/dev/shm/sf}/run/vpn:/sf/run/vpn" # Between all VPNs
- "${SF_SHMDIR:-/dev/shm/sf}/config-for-guest:/config/guest" # vpn_status to guest
- "${SF_BASEDIR:-.}/sfbin:/sf/bin:ro"
mullvad:
image: hackerschoice/cryptostorm
2022-10-08 08:30:59 +00:00
container_name: sf-mullvad
restart: ${SF_RESTART:-on-failure}
2022-09-28 09:49:46 +00:00
depends_on:
- dnsmasq
2022-10-08 08:30:59 +00:00
- sf-redis
2022-10-12 16:45:46 +00:00
- router
2022-09-28 09:49:46 +00:00
dns: 172.20.0.53
cap_add:
- NET_ADMIN #required
environment:
- CONFIG=${SF_MULLVAD_CONFIG:-}
2022-10-08 08:30:59 +00:00
- PROVIDER=Mullvad
- POST_UP=/sf/bin/vpn_wg2status.sh /sf/run/vpn/status-mullvad.log up %i
- PRE_DOWN=/sf/bin/vpn_wg2status.sh /sf/run/vpn/status-mullvad.log down %i
2022-09-28 09:49:46 +00:00
- RECONNECT=604800 # Re-Connect every 7 days
2022-10-11 12:51:11 +00:00
- SF_REDIS_AUTH=${SF_REDIS_AUTH}
2022-10-08 08:30:59 +00:00
- SF_DEBUG
2022-09-28 09:49:46 +00:00
networks:
vpn-net:
ipv4_address: 172.20.0.252
2022-10-08 08:30:59 +00:00
redis-net:
2022-09-28 09:49:46 +00:00
sysctls:
- net.ipv6.conf.all.disable_ipv6=1
- net.ipv4.conf.all.rp_filter=2
- net.ipv4.ip_forward=1
volumes:
- "${SF_SHMDIR:-/dev/shm/sf}/run/vpn:/sf/run/vpn" # Between all VPNs
- "${SF_SHMDIR:-/dev/shm/sf}/config-for-guest:/config/guest" # vpn_status to guest
- "${SF_BASEDIR:-.}/sfbin:/sf/bin:ro"
2022-07-25 12:42:33 +00:00
router:
build: router
2022-07-27 14:26:03 +00:00
image: sf-router
2022-09-28 09:49:46 +00:00
hostname: sf-router
2022-10-16 15:14:16 +00:00
container_name: sf-router
2022-07-25 12:42:33 +00:00
depends_on:
- router-fix-network
networks:
2022-08-03 06:46:08 +00:00
incoming-net:
ipv4_address: 172.28.0.2
2022-07-30 22:12:55 +00:00
vpn-net:
2022-07-25 12:42:33 +00:00
ipv4_address: 172.20.0.2
guest-net:
ipv4_address: 10.11.255.253 # Will be replaced by init.sh with 10.11.0.1
2022-08-09 19:29:11 +00:00
access-net:
2022-08-03 06:46:08 +00:00
ipv4_address: 172.22.0.254
2022-08-09 13:05:52 +00:00
dmz-net:
ipv4_address: 172.20.1.254
2022-07-25 12:42:33 +00:00
cap_add:
- NET_ADMIN
2022-08-03 06:46:08 +00:00
sysctls:
- net.ipv4.conf.all.src_valid_mark=1 # SNAT
2022-09-17 18:39:19 +00:00
- net.ipv4.conf.all.rp_filter=2
2022-08-03 06:46:08 +00:00
ports:
- "${SF_SSH_PORT:-22}:22"
2022-10-12 16:45:46 +00:00
- "${SF_SSH_PORT2:-443}:22"
2022-07-25 12:42:33 +00:00
environment:
2022-07-28 13:33:08 +00:00
- SF_DEBUG
- SF_MAXOUT
- SF_MAXIN
2022-07-28 20:23:47 +00:00
restart: ${SF_RESTART:-on-failure}
2022-07-27 14:26:03 +00:00
volumes:
2022-07-28 16:02:58 +00:00
- "${SF_SHMDIR:-/dev/shm/sf}/run/vpn:/sf/run/vpn"
2022-09-18 11:42:52 +00:00
- "${SF_BASEDIR:-.}/config/etc/sf:/config/host/etc/sf:ro"
2022-09-17 18:39:19 +00:00
- "${SF_SHMDIR:-/dev/shm/sf}/config-for-guest:/config/guest" # vpn_status to guest
2022-07-25 12:42:33 +00:00
entrypoint: ["/init.sh"]
router-fix-network:
2022-07-28 17:20:55 +00:00
build: router
2022-07-25 12:42:33 +00:00
image: sf-router
network_mode: host # host's stack
cap_add:
- NET_ADMIN
environment:
2022-07-28 13:33:08 +00:00
- SF_DEBUG
2022-07-30 22:12:55 +00:00
restart: ${SF_RESTART:-on-failure}:1
2022-07-25 12:42:33 +00:00
entrypoint: ["/fix-network.sh"]
2022-03-08 18:15:37 +00:00
tor:
2022-05-20 15:59:45 +00:00
build: tor
2022-07-27 14:26:03 +00:00
image: sf-tor
2022-09-28 09:49:46 +00:00
hostname: sf-tor
2022-03-08 18:15:37 +00:00
networks:
2022-07-30 22:12:55 +00:00
vpn-net:
2022-07-28 13:33:08 +00:00
ipv4_address: 172.20.0.111
2022-07-27 14:26:03 +00:00
cap_add:
- NET_ADMIN
2022-07-28 20:23:47 +00:00
restart: ${SF_RESTART:-on-failure}
2022-09-28 09:49:46 +00:00
dns: 172.20.0.53
2022-03-08 18:15:37 +00:00
depends_on:
- dnsmasq
2022-05-20 15:59:45 +00:00
- nginx
volumes:
2022-07-28 13:33:08 +00:00
- "${SF_BASEDIR:-.}/config/${SF_FQDN:-SF_FQDN-NOT-SET.hack.segfault.net}/tor/hidden:/var/lib/tor/hidden"
2022-09-18 11:42:52 +00:00
- "${SF_BASEDIR:-.}/config/etc/tor:/config/host/etc/tor:ro"
2022-09-09 14:19:46 +00:00
- "${SF_SHMDIR:-/dev/shm/sf}/config-for-guest:/config/guest"
2022-03-08 18:15:37 +00:00
2022-07-28 13:33:08 +00:00
gsnc:
build: gsnc
image: sf-gsnc
2022-08-09 13:05:52 +00:00
networks:
2022-08-09 19:29:11 +00:00
access-net:
2022-08-09 13:05:52 +00:00
ipv4_address: 172.22.0.21
2022-09-28 09:49:46 +00:00
dns: 172.22.0.53
2022-08-09 13:05:52 +00:00
cap_add:
- NET_ADMIN # need to set default route
2022-07-28 13:33:08 +00:00
depends_on:
2022-08-09 13:05:52 +00:00
- dnsmasq
2022-07-28 13:33:08 +00:00
- router
2022-07-28 20:23:47 +00:00
restart: ${SF_RESTART:-on-failure}
2022-07-28 13:33:08 +00:00
environment:
- SF_SSH_PORT=${SF_SSH_PORT:-22}
- SF_FQDN=${SF_FQDN:-SF_FQDN-NOT-SET.hack.segfault.net}
- SF_DEBUG
2022-10-11 12:51:11 +00:00
- SF_SEED=${SF_SEED}
2022-07-28 13:33:08 +00:00
volumes:
2022-09-09 14:19:46 +00:00
- "${SF_SHMDIR:-/dev/shm/sf}/config-for-guest:/config/guest"
2022-08-09 13:05:52 +00:00
entrypoint: ["/sf-gsnc.sh", "172.22.0.22"]
2022-07-28 13:33:08 +00:00
2022-05-10 15:39:52 +00:00
segfault:
2022-03-08 18:15:37 +00:00
build: host
2022-07-27 14:26:03 +00:00
image: sf-host
# /bin/segfaultsh need to know the container name; set it to sf-host statically
container_name: sf-host
2022-07-28 13:33:08 +00:00
networks:
2022-10-08 08:30:59 +00:00
# WARNING: sshd's port forward/socks can access those networks.
2022-08-09 19:29:11 +00:00
access-net:
2022-08-03 06:46:08 +00:00
ipv4_address: 172.22.0.22
2022-10-08 08:30:59 +00:00
redis-net:
2022-09-28 09:49:46 +00:00
dns: 172.22.0.53
2022-08-03 06:46:08 +00:00
cap_add:
2022-08-09 13:05:52 +00:00
- NET_ADMIN # need to set default route
2022-03-08 18:15:37 +00:00
depends_on:
- dnsmasq
2022-08-09 13:05:52 +00:00
- router
2022-10-08 08:30:59 +00:00
- sf-encfsd
2022-07-28 20:23:47 +00:00
restart: ${SF_RESTART:-on-failure}
2022-05-10 15:39:52 +00:00
init: true
2022-07-27 14:26:03 +00:00
# SSHD clears all environment variables before spwaning a shell (segfaultsh).
# Add any variables to docker_sshd.sh as well.
environment:
2022-09-28 09:49:46 +00:00
- SF_DNS=10.11.255.53
2022-07-28 13:33:08 +00:00
- SF_TOR=172.20.0.111
2022-07-27 14:26:03 +00:00
- SF_BASEDIR=${SF_BASEDIR}
2022-07-28 16:02:58 +00:00
- SF_SHMDIR=${SF_SHMDIR:-/dev/shm/sf}
2022-07-27 14:26:03 +00:00
- SF_USER=${SF_USER:-root}
- SF_USER_PASSWORD=${SF_USER_PASSWORD:-segfault}
- SF_FQDN=${SF_FQDN:-SF_FQDN-NOT-SET.hack.segfault.net}
2022-10-11 12:51:11 +00:00
- SF_REDIS_AUTH=${SF_REDIS_AUTH}
- SF_SEED=${SF_SEED}
2022-07-28 13:33:08 +00:00
- SF_DEBUG
2022-03-08 18:15:37 +00:00
volumes:
2022-09-18 11:42:52 +00:00
- "${SF_BASEDIR:-.}/config:/config/host"
2022-10-08 08:30:59 +00:00
- "${SF_BASEDIR:-.}/data/share:/sf/share:ro"
2022-09-09 14:19:46 +00:00
- "${SF_BASEDIR:-.}/sfbin/wait_semaphore.sh:/sf/bin/wait_semaphore.sh:ro"
- "${SF_SHMDIR:-/dev/shm/sf}/encfs-sec/www-root:/sec/www-root:slave"
- "${SF_SHMDIR:-/dev/shm/sf}/config-for-guest:/config/guest"
2022-10-08 08:30:59 +00:00
- "${SF_SHMDIR:-/dev/shm/sf}/self-for-guest:/config/self-for-guest"
2022-03-08 18:15:37 +00:00
- "/var/run/docker.sock:/var/run/docker.sock"
2022-05-20 15:59:45 +00:00
nginx:
image: nginx
2022-07-28 20:23:47 +00:00
restart: ${SF_RESTART:-on-failure}
2022-07-25 12:42:33 +00:00
depends_on:
2022-10-08 08:30:59 +00:00
- sf-encfsd
2022-08-02 10:07:05 +00:00
entrypoint: ["/sf/bin/wait_semaphore.sh", "/sec/.IS-ENCRYPTED", "nginx", "-g", "daemon off;"]
2022-05-20 15:59:45 +00:00
networks:
2022-08-09 13:05:52 +00:00
dmz-net:
ipv4_address: 172.20.1.80
dns: 255.255.255.255
cap_add:
- NET_ADMIN # need to set default route
2022-05-20 15:59:45 +00:00
volumes:
2022-09-09 14:19:46 +00:00
- "${SF_BASEDIR:-.}/sfbin/wait_semaphore.sh:/sf/bin/wait_semaphore.sh:ro"
2022-08-02 10:07:05 +00:00
- "${SF_SHMDIR:-/dev/shm/sf}/encfs-sec/www-root:/sec:slave,ro"
2022-07-27 14:26:03 +00:00
- "${SF_BASEDIR:-.}/config/etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro"
2022-05-20 15:59:45 +00:00
2022-03-08 11:17:29 +00:00
networks:
2022-07-30 22:12:55 +00:00
vpn-net:
name: sf-vpn
2022-07-25 12:42:33 +00:00
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.0.0/24
2022-08-03 06:46:08 +00:00
incoming-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.28.0.0/24
2022-08-09 19:29:11 +00:00
access-net:
name: sf-access
2022-08-03 06:46:08 +00:00
driver: bridge
ipam:
driver: default
config:
- subnet: 172.22.0.0/24
2022-08-09 13:05:52 +00:00
dmz-net:
name: sf-dmz
2022-05-20 15:59:45 +00:00
driver: bridge
2022-07-28 16:02:58 +00:00
ipam:
config:
- subnet: 172.20.1.0/24
2022-05-20 15:59:45 +00:00
2022-10-08 08:30:59 +00:00
redis-net:
name: sf-redis-net
driver: bridge
ipam:
config:
- subnet: 172.20.2.0/24
2022-03-08 18:15:37 +00:00
dns-doh-net:
2022-07-30 22:12:55 +00:00
name: sf-dns-doh
2022-03-08 18:15:37 +00:00
driver: bridge
ipam:
config:
- subnet: 172.23.0.0/24
2022-07-25 12:42:33 +00:00
# User's shell
2022-03-08 18:15:37 +00:00
guest-net:
2022-07-30 22:12:55 +00:00
name: sf-guest
2022-03-08 18:15:37 +00:00
driver: bridge
ipam:
2022-07-25 12:42:33 +00:00
driver: default
2022-03-08 18:15:37 +00:00
config:
2022-07-25 12:42:33 +00:00
- subnet: 10.11.0.0/16
# default gw is always 10.11.0.1 and is the host side of the bridge (?)
2022-03-08 18:15:37 +00:00