Compare commits

...

2 commits

Author SHA1 Message Date
Alexey Skobkin 8d3710d0cb
sish. stack draft. 2024-07-25 23:35:55 +03:00
Alexey Skobkin 24beb91928 castopod (#112) (#114)
Co-authored-by: Alexey Skobkin <skobkin-ru@ya.ru>
Reviewed-on: #114
2024-07-25 20:24:19 +00:00
9 changed files with 189 additions and 0 deletions

View file

@ -35,6 +35,7 @@ Not every stack is tested to fully work.
| App Name | Status | Image | Description | Links |
|-------------------------|-------------|----------------------------------------------|-------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ARK Server | ✅ | `thmhoag/arkserver` | ARK: Survival Evolved game server with ArkManager. | [Website](http://playark.com), [Steam](https://store.steampowered.com/app/346110/ARK_Survival_Evolved/), [Image Github](https://github.com/thmhoag/arkserver), [ArkManager](https://github.com/arkmanager/ark-server-tools) |
| Castopod | ✅ | `castopod/castopod` | Self-hosted federated podcasting platform | [Website](https://castopod.org), [Gitlab](https://code.castopod.org/adaures/castopod) |
| Drone | ✅ | `drone/drone` | Continuous integration platform. | [Website](https://www.drone.io), [Github](https://github.com/harness/drone), [Image](https://hub.docker.com/r/drone/drone) |
| Drone Docker Runner | ✅ | `drone/drone-runner-docker` | CI runner daemon for Docker. | [Website](https://www.drone.io), [Github](https://github.com/drone-runners/drone-runner-docker), [Image](https://hub.docker.com/r/drone/drone-runner-docker) |
| Duplicati | ✅ | `linuxserver/duplicati` | Backup solution with many storage backends. | [Website](https://www.duplicati.com), [Github](https://github.com/duplicati/duplicati) |
@ -67,6 +68,7 @@ Not every stack is tested to fully work.
| Radarr | ✅ | `linuxserver/radarr` | Movie downloader and manager. | [Website](https://radarr.video), [Github](https://github.com/Radarr/Radarr), [Wiki](https://wiki.servarr.com/radarr) |
| Redis | ✅ | `redis` | Redis storage server. | [Website](https://redis.io), [Github](https://github.com/redis/redis-io) |
| Shadowsocks Client | ✅ | `ghcr.io/shadowsocks/sslocal-rust:latest` | Shadowsocks client (and SOCKS/HTTP/tunnel server). | [Website](https://shadowsocks.org), [Github](https://github.com/shadowsocks/shadowsocks-rust), [Configuration](https://github.com/shadowsocks/shadowsocks-rust#getting-started) |
| Sish | ✅ | `antoniomika/sish` | Localhost tunneling solution over SSH | [Docs](https://docs.ssi.sh/getting-started), [Github](https://github.com/antoniomika/sish) |
| Shinobi | ✅ | `shinobisystems/shinobi` | Shinobi surveillance system | [Website](https://shinobi.video), [Github](https://github.com/ShinobiCCTV/Shinobi) |
| Sonarr | ✅ | `linuxserver/sonarr` | TV Shows, series and anime downloader and manager. | [Website](https://sonarr.tv), [Github](https://github.com/Sonarr/Sonarr), [Wiki](https://wiki.servarr.com/sonarr) |
| Speedtest | ✅ | `adolfintel/speedtest` | Libre speed test implementation. | [Website](https://librespeed.org), [Github](https://github.com/librespeed/speedtest) |

57
castopod/.env.dist Normal file
View file

@ -0,0 +1,57 @@
# see https://docs.castopod.org/main/en/getting-started/docker/
# see https://hub.docker.com/r/castopod/castopod
# see https://docs.castopod.org/main/en/getting-started/docker/#environment-variables
IMAGE_TAG=latest
# Ports
EXTERNAL_ADDRESS=127.0.0.1
EXTERNAL_PORT=8393
# Castopod Settings
CP_BASEURL=https://cp.domain.tld
#CP_MEDIA_BASEURL=https://cp.domain.tld
CP_ANALYTICS_SALT=changeme
#CP_CACHE_HANDLER=redis
#CP_REDIS_HOST=redis
CP_REDIS_PASSWORD=changeme
#CP_ADMIN_GATEWAY=custom-admin-path
#CP_AUTH_GATEWAY=custom-auth-path
#CP_ENABLE_2FA=true
CP_DATABASE_HOSTNAME=host.docker.internal
CP_DATABASE_NAME=castopod
CP_DATABASE_USERNAME=castopod
CP_DATABASE_PASSWORD=changeme
# Storage
MEDIA_PATH=./media
REDIS_DATA_PATH=./redis_data
# See https://docs.castopod.org/main/en/getting-started/install/#s3
#CP_MEDIA_FILE_MANAGER="s3"
#CP_MEDIA_S3_ENDPOINT="your_s3_host"
#CP_MEDIA_S3_KEY="your_s3_key"
#CP_MEDIA_S3_SECRET="your_s3_secret"
#CP_MEDIA_S3_REGION="your_s3_region"
##CP_MEDIA_S3_BUCKET="your_s3_bucket"
##CP_MEDIA_S3_PROTOCOL=
##CP_MEDIA_S3_PATH_STYLE_ENDPOINT=
##CP_MEDIA_S3_KEY_PREFIX=
#CP_MAX_BODY_SIZE=512M
# Mailing
#CP_EMAIL_FROM=your_email_address
#CP_EMAIL_SMTP_HOST=your_smtp_host
#CP_EMAIL_SMTP_USERNAME=your_smtp_user
#CP_EMAIL_SMTP_PASSWORD=your_smtp_password
##CP_EMAIL_SMTP_PORT=12345
##CP_EMAIL_SMTP_CRYPTO=tls
LOG_MAX_SIZE=5m
LOG_MAX_FILE=5

View file

@ -0,0 +1,46 @@
services:
castopod:
image: 'castopod/castopod:${IMAGE_TAG:-latest}'
container_name: 'castopod'
volumes:
- '${MEDIA_PATH:-./media}:/var/www/castopod/public/media'
environment:
MYSQL_DATABASE: '${CP_DATABASE_NAME:-castopod}'
MYSQL_USER: '${CP_DATABASE_USERNAME:-castopod}'
MYSQL_PASSWORD: '${CP_DATABASE_PASSWORD}'
CP_BASEURL: "${CP_BASEURL}"
CP_ANALYTICS_SALT: '${CP_ANALYTICS_SALT}'
CP_CACHE_HANDLER: '${CP_CACHE_HANDLER:-redis}'
CP_REDIS_HOST: '${CP_REDIS_HOST:-redis}'
CP_REDIS_PASSWORD: '${CP_REDIS_PASSWORD}'
env_file: '.env'
networks:
- castopod
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${EXTERNAL_ADDRESS:-127.0.0.1}:${EXTERNAL_PORT:-8393}:8000'
restart: unless-stopped
logging:
driver: 'json-file'
options:
max-size: '${LOG_MAX_SIZE:-5m}'
max-file: '${LOG_MAX_FILE:-5}'
redis:
image: 'redis:7.2-alpine'
container_name: 'castopod-redis'
command: '--requirepass ${CP_REDIS_PASSWORD}'
volumes:
- '${REDIS_DATA_PATH:-./redis_data}:/data'
networks:
- castopod
restart: unless-stopped
logging:
driver: 'json-file'
options:
max-size: '${LOG_MAX_SIZE:-5m}'
max-file: '${LOG_MAX_FILE:-5}'
networks:
castopod:

2
castopod/media/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/*
!/.gitignore

2
castopod/redis_data/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/*
!/.gitignore

16
sish/.env.dist Normal file
View file

@ -0,0 +1,16 @@
# see https://hub.docker.com/r/antoniomika/sish
IMAGE_VERSION=latest
HTTP_BIND_ADDR=127.0.0.1
HTTP_BIND_PORT=8395
SSH_BIND_ADDR=0.0.0.0
SSH_BIND_PORT=2222
PUBKEYS_PATH=./pubkeys
BASE_DOMAIN=si.sh
# Service settings
LOG_MAX_SIZE=5m
LOG_MAX_FILE=5

28
sish/docker-compose.yml Normal file
View file

@ -0,0 +1,28 @@
# https://hub.docker.com/r/antoniomika/sish
services:
sish:
image: 'antoniomika/sish:${IMAGE_VERSION:-latest}'
container_name: sish
depends_on:
volumes:
- '${PUBKEYS_PATH:-./pubkeys}:/pubkeys'
# see https://docs.ssi.sh/getting-started#docker
command: |
--ssh-address=${SSH_BIND_ADDR:-0.0.0.0}:${SSH_BIND_PORT:-2222}
--http-address=:${HTTP_BIND_PORT:-8395}
--authentication=true
--authentication-keys-directory=/pubkeys
--bind-random-ports=false
--bind-random-subdomains=false
--domain=${BASE_DOMAIN:-si.sh}
#network_mode: host
ports:
- '${SSH_BIND_ADDR:-0.0.0.0}:${SSH_BIND_PORT:-2222}:${SSH_BIND_PORT:-2222}'
- '${HTTP_BIND_ADDR:-127.0.0.1}:${HTTP_BIND_PORT:-8395}:${HTTP_BIND_PORT:-8395}'
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "${LOG_MAX_SIZE:-5m}"
max-file: "${LOG_MAX_FILE:-5}"

36
sish/nginx/sish.conf Normal file
View file

@ -0,0 +1,36 @@
upstream sish {
server 127.0.0.1:8395;
}
server {
server_name *.sish.domain.tld;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_read_timeout 60s;
proxy_send_timeout 60s;
client_max_body_size 512M;
proxy_pass http://sish;
}
#listen [::]:443 ssl http2 ipv6only=on;
listen 443 ssl http2;
include /etc/nginx/ssl/sish.domain.tld.conf;
error_log /var/log/nginx/sish.domain.tld_error.log;
access_log /var/log/nginx/sish.domain.tld.in_access.log;
}

0
sish/pubkeys/.gitkeep Normal file
View file