GeoIP-Update
docker run -itd \
--name geoip-update \
-e GEOIPUPDATE_ACCOUNT_ID=<ACCOUNT_ID> \
-e GEOIPUPDATE_LICENSE_KEY=<LICENSE_KEY> \
-e GEOIPUPDATE_EDITION_IDS=GeoLite2-Country \
-e GEOIPUPDATE_FREQUENCY=24 \
-v /etc/caddy/GeoIP:/usr/share/GeoIP \
--restart=unless-stopped \
maxmindinc/geoipupdate
qBittorrent
docker run -itd \
--name=qbittorrent \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai\
-e WEBUI_PORT=9090 \
-p 9090:9090 \
-p 9091:6881 \
-p 9091:6881/udp \
-v /data/docker/qbittorrent:/config \
-v /data/downloads/qBittorrent:/downloads \
--restart unless-stopped \
lscr.io/linuxserver/qbittorrent:latest
Portainer
docker run -itd \
--name portainer-ce \
--network=bridge \
--restart=always \
-p 9000:9000 \
--privileged \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer-ce
DDNS-GO
docker run --itd \
--name=ddns-go \
--volume=/data/docker/ddns-go:/root \
--network=host \
--restart=always \
jeessy/ddns-go
Nginx-Proxy-Manager
vim docker-compose.yml
-----
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '8443:443'
volumes:
- /data/docker/nginx-proxy-manager:/data
- /data/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
-----
Uptime-Kuma
docker run -itd \
--name=uptime-kuma \
--volume=/data/docker/uptime-kuma:/app/data \
-p 3001:3001 \
-e UPTIME_KUMA_WS_ORIGIN_CHECK="bypass" \
--restart=always \
louislam/uptime-kuma:1
Vaultwarden
docker run -itd \
--name=vaultwarden \
--volume=/data/docker/vaultwarden:/data/ \
-p 9001:80 \
--restart=unless-stopped \
vaultwarden/server:latest
Memos
docker run -itd \
--name memos \
-p 9090:5230 \
-v /data/docker/memos/:/var/opt/memos \
ghcr.io/usememos/memos:latest
Navidrome
vim docker-compose.yml
-----
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
ports:
- "9070:4533"
restart: unless-stopped
environment:
ND_SCANSCHEDULE: 24h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 72h
ND_COVERJPEGQUALITY: 100
ND_DEFAULTLANGUAGE: zh-Hans
ND_DEFAULTTHEME: Light
ND_ENABLESHARING: true
ND_ENABLESTARRATING: false
ND_ENABLETRANSCODINGCONFIG: true
# ND_DEVAUTOLOGINUSERNAME: user
volumes:
- "/data/docker/navidrome:/data"
- "/media/Music:/music:ro"
-----
Owncast
docker run -itd \
--name=owncast \
--restart=always \
-v /data/docker/owncast:/app/data \
-p 8080:8080 \
-p 1935:1935 \
owncast/owncast:latest
Nextcloud
vim docker-compose.yml
-----
services:
postgresql:
image: postgres
container_name: postgresql
restart: always
environment:
POSTGRES_PASSWORD: <your-password>
POSTGRES_USER: admin
POSTGRES_DB: nextcloud
volumes:
- /data/docker/nextcloud/postgresql:/var/lib/postgresql/data
nextcloud:
image: nextcloud
container_name: nextcloud
restart: always
ports:
- 8090:80
depends_on:
- postgresql
environment:
POSTGRES_HOST: postgresql
POSTGRES_DB: nextcloud
POSTGRES_USER: admin
POSTGRES_PASSWORD: <your-password>
volumes:
- /data/docker/nextcloud/app:/var/www/html
onlyoffice:
image: thomisus/onlyoffice-documentserver-unlimited
container_name: onlyoffice
restart: always
ports:
- 8091:80
environment:
JWT_ENABLED: 'true'
JWT_SECRET: '<your-password>'
depends_on:
- postgresql
volumes:
- /data/docker/nextcloud/onlyoffice/logs:/var/log/onlyoffice
- /data/docker/nextcloud/onlyoffice/data:/var/www/onlyoffice/Data
- /data/docker/nextcloud/onlyoffice/lib:/var/lib/onlyoffice
- /data/docker/nextcloud/onlyoffice/rabbitmq:/var/lib/rabbitmq
- /data/docker/nextcloud/onlyoffice/redis:/var/lib/redis
- /data/docker/nextcloud/onlyoffice/db:/var/lib/postgresql
volumes:
postgresql:
-----
Nextcloud domain settings
vim /data/docker/nextcloud/config/config.sample.php
...
'trusted_domains' =>
1 => 'cloud.suling.pro'
...
'overwritehost' => 'cloud.suling.pro:8443',
'overwriteprotocol' => 'https',
'overwrite.cli.url' => 'https://cloud.suling.pro:8443',
OnlyOffice behind nginx proxy manager
Custom Locations → Add Location: → Location: / → Settings:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Rustdesk
vim docker-compose.yml
-----
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: rustdesk-hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
image: rustdesk/rustdesk-server
command: hbbs -r 0.0.0.0
volumes:
- /data/docker/rustdesk:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
hbbr:
container_name: rustdesk-hbbr
ports:
- 21117:21117
image: rustdesk/rustdesk-server
command: hbbr
volumes:
- /data/docker/rustdesk:/root
networks:
- rustdesk-net
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
-----
Udpxy
docker run -idt \
--name udpxy \
--network host \
--restart always \
lordpedal/udpxy
status page: http://192.168.123.200:2112/status
usage: http://192.168.123.200:2112/udp/226.0.1.135:2020
Flare
docker run -itd \
--name=flare \
-p 5005:5005 \
--restart=unless-stopped \
-v /data/docker/flare:/app \
soulteary/flare
Lookinglass
docker run -itd \
--name looking-glass \
--restart always \
--network host \
wikihostinc/looking-glass-server
Watchover
docker run -itd \
--name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup
Xray (shadowsocks & socks5)
// vim /data/docker/xray/config.json
-----
{
"inbounds": [
{
"port": 8380,
"protocol": "socks",
"settings": {
"auth": "password",
"accounts": [
{
"user": "admin",
"pass": "<your-password>"
}
],
"udp": true
}
},
{
"port": 8388,
"protocol": "shadowsocks",
"settings": {
"method": "aes-128-gcm",
"password": "<your-password>",
"udp": true
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}
-----
docker run -itd \
--name xray \
-v /data/docker/xray/config.json:/etc/xray/config.json \
-p 8380:8380 \
-p 8388:8388 \
teddysun/xray
Runlike
alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"
Atuin server
# Config file
vim config/server.toml
-----
ATUIN_HOST="0.0.0.0"
ATUIN_PORT=8888
ATUIN_OPEN_REGISTRATION=true
ATUIN_DB_URI="postgres://admin:<your-password>@db/database"
-----
# Env secret file
vim .env
-----
ATUIN_DB_USERNAME=admin
ATUIN_DB_PASSWORD=<your-password>
-----
vim docker-compose.yml
-----
version: '3.5'
services:
atuin:
restart: always
image: ghcr.io/atuinsh/atuin:18.0.1
container_name: atuin-server
command: server start
volumes:
- "./config:/config"
links:
- postgresql:db
ports:
- 8077:8888
environment:
ATUIN_HOST: "0.0.0.0"
ATUIN_OPEN_REGISTRATION: "true"
ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/atuin
postgresql:
image: postgres:14
container_name: atuin-postgresql
restart: unless-stopped
volumes:
- "./database:/var/lib/postgresql/data/"
environment:
POSTGRES_USER: $ATUIN_DB_USERNAME
POSTGRES_PASSWORD: $ATUIN_DB_PASSWORD
POSTGRES_DB: atuin
-----
Pingvin-share
vim docker-compose.yml
-----
version: '3.8'
services:
pingvin-share:
image: stonith404/pingvin-share
restart: unless-stopped
ports:
- 9009:3000
volumes:
- "./data:/opt/app/backend/data"
- "./data/images:/opt/app/frontend/public/img"
-----