Compare commits

..

No commits in common. "0ffd7a3f64d831af007ad2a31c22fdd7f62e2e1d" and "0fe15c49f02e1921d684766cb4261f5936d54b73" have entirely different histories.

28 changed files with 394 additions and 0 deletions

View file

@ -47,19 +47,25 @@ Not every stack is tested to fully work.
| Homer | ✅ | `b4bz/homer` | Server homepage generator. | [Github](https://github.com/bastienwirtz/homer), [Demo](https://homer-demo.netlify.app), [Configuration](https://github.com/bastienwirtz/homer/blob/main/docs/configuration.md) |
| I2PD | ✅ | `purplei2p/i2pd` | The Invisible Internet router. | [Website](https://i2pd.website), [Github](https://github.com/PurpleI2P/i2pd/), [I2P project](https://geti2p.net/) |
| InBucket | ✅ | `inbucket/inbucket` | Testing SMTP/POP3 mail server with web interface. | [Website](https://www.inbucket.org), [Github](https://github.com/inbucket/inbucket) |
| ~~JDownloader~~ | ✅ Abandoned | `jaymoulin/jdownloader` | Download manager with paid/ad file hosting support. | [Website](https://jdownloader.org) |
| ~~Joplin~~ | ✅ Abandoned | `joplin/server` | Markdown GTD / notes manager synchronization server. | [Website](https://joplinapp.org), [Github](https://github.com/laurent22/joplin) |
| Killing Floor 2 server | ✅ Abandoned | `jeeaaasustest/killingfloor2-srv` | Killing Floor 2 game server. | |
| Lidarr | Not tested | `linuxserver/lidarr` | Music downloader and manager. | [Website](https://lidarr.audio), [Github](https://github.com/Lidarr/Lidarr), [Wiki](https://wiki.servarr.com/lidarr) |
| magnetico-web | ✅ | `skobkin/magnetico-web` | DHT indexer private web search front-end. | [Git](https://git.skobk.in/skobkin/magnetico-web), [Git mirror](https://gitlab.com/skobkin/magnetico-web) |
| magnetico-web-telegram | ✅ | `skobkin/magnetico-web-telegram-bot` | Magnetico Web Telegram bot. | [Bitbucket](https://bitbucket.org/skobkin/magnetico-web-telegram-bot/) |
| magneticod | ✅ | `boramalper/magneticod` | DHT indexing daemon. | [Website](https://www.boramalper.org/labs/magnetico/), [Github](https://github.com/boramalper/magnetico) |
| ~~magneticod-python~~ | ✅ Abandoned | `skobkin/magneticod-python` | DHT indexing daemon (legacy version) | [Website](https://www.boramalper.org/labs/magnetico/), [Github](https://github.com/boramalper/magnetico) |
| ~~mariadb-common~~ | ❌ Unfinished | `mariadb` | MariaDB database for common use. | [Website](https://mariadb.org) |
| Matrix Telegram Bridge | ✅ | `dock.mau.dev/mautrix/telegram` | Telegram bridge for Matrix server | [Gitlab](https://mau.dev/mautrix/telegram/) |
| Metube | ✅ | `alexta69/metube` | Web GUI for yt-dlp. | [Github](https://github.com/alexta69/metube) |
| Murmur (Mumble server) | ✅ | `registry.gitlab.com/skobkin/docker-murmur` | Mumble VoIP server (custom build) | [Website](https://www.mumble.info), [Github](https://github.com/mumble-voip/mumble) |
| NextCloud | ❌ Unfinished | `nextcloud` | File management, synchronization, management and GTD platform. | [Website](https://nextcloud.com), [Github](https://github.com/nextcloud/server) |
| Ollama | ✅ | `ollama/ollama` | Toolkit for easily running LLM's locally. | [Website](https://ollama.com), [Github](https://github.com/ollama/ollama) |
| Open Streaming Platform | ✅ | `deamos/openstreamingplatform` | Live streaming platform. | [Website](https://openstreamingplatform.com), [Gitlab](https://gitlab.com/osp-group/flask-nginx-rtmp-manager) |
| OpenVPN | ✅ | `kylemanna/openvpn` | OpenVPN server with some management toolkit. | [Website](https://openvpn.net), [Image Github](https://www.github.com/kylemanna/docker-openvpn) |
| Owncast | ✅ | `gabekangas/owncast` | Live streaming platform with federation support. | [Website](https://owncast.online), [Github](https://github.com/owncast/owncast) |
| Portainer | ✅ | `portainer/portainer` | Docker Container management web UI. | [Website](https://www.portainer.io), [Github](https://github.com/portainer/portainer) |
| ~~Postgres Common~~ | ❌ Unfinished | `postgres` | PostgreSQL database for common use. | [Website](https://www.postgresql.org) |
| Proxy MTProto | ✅ | `mtproxy/mtproxy` | MTProto Telegram proxy. | [Website](https://telegram.org), [Github](https://github.com/TelegramMessenger/MTProxy) |
| Proxy Socks5 | ✅ | `serjs/go-socks5-proxy` | Simple SOCKS5 proxy. | [Github](https://github.com/serjs/socks5-server) |
| qBittorrent | ✅ | `linuxserver/qbittorrent` | qBittorrent (noX) | [Website](https://www.qbittorrent.org), [LinuxServer Fleet](https://fleet.linuxserver.io/image?name=linuxserver/qbittorrent) |
@ -77,3 +83,5 @@ Not every stack is tested to fully work.
| Tor Privoxy | ✅ | `registry.gitlab.com/skobkin/torproxy-obfs4` | Tor image with integrated privoxy and OBFS4 bridge support. | [Original image Github](https://github.com/dperson/torproxy), [OBFS4 support image Gitlab](https://gitlab.com/skobkin/torproxy-obfs4) |
| Watchtower | ✅ | `containrrr/watchtower` | Docker container auto-update daemon. | [Website](https://containrrr.dev/watchtower/), [Github](https://github.com/containrrr/watchtower) |
| Webhook.site | | `webhooksite/webhook.site` | HTTP callback testing tool | [Website](https://webhook.site), [Github](https://github.com/webhooksite/webhook.site) |
| Wireguard | ❌ Unfinished | `cmulk/wireguard-docker` | WireGuard VPN. | [Website](https://www.wireguard.com), [Image Github](https://github.com/cmulk/wireguard-docker) |
| ~~Wordpress~~ | ❌ Unfinished | `wordpress` | Wordpress blogging platform. | [Webiste](https://wordpress.org), [SVN](https://build.trac.wordpress.org/browser) |

16
jdownloader/.env.dist Normal file
View file

@ -0,0 +1,16 @@
# see # https://hub.docker.com/r/jaymoulin/jdownloader
HOST_USER=1000
HOST_GROUP=1000
CONFIG_PATH=./config/config
LOGS_PATH=./config/logs
DOWNLOADS_PATH=./data
MYJD_BIND_PORT=3129
MYJD_USER=xxx@yyy.tld
MYJD_PASSWORD=qwerty
MYJD_DEVICE_NAME=mydevice
LOG_MAX_SIZE=5m
LOG_MAX_FILE=5

2
jdownloader/config/.gitignore vendored Normal file
View file

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

2
jdownloader/data/.gitignore vendored Normal file
View file

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

View file

@ -0,0 +1,27 @@
# https://hub.docker.com/r/jaymoulin/jdownloader
version: '3.7'
services:
jdownloader:
image: jaymoulin/jdownloader
container_name: jdownloader
restart: unless-stopped
user: "${HOST_USER}:${HOST_GROUP}"
volumes:
- "${CONFIG_PATH:-./config/config}:/opt/JDownloader/app/cfg"
- "${DOWNLOADS_PATH:-./data}:/opt/JDownloader/Downloads"
- "${LOGS_PATH:-./config/logs}:/opt/JDownloader/app/logs" #optional
- /etc/localtime:/etc/localtime:ro #optional
env_file: ".env"
#environment:
#MYJD_USER: email@email.com #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
#MYJD_PASSWORD: bar #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
#MYJD_DEVICE_NAME: "${MYJD_DEVICE_NAME}" #optional
#XDG_DOWNLOAD_DIR: /opt/JDownloader/Downloads #optional
ports:
- "${MYJD_BIND_PORT:-3129}:3129"
logging:
driver: "json-file"
options:
max-size: "${LOG_MAX_SIZE:-5m}"
max-file: "${LOG_MAX_FILE:-5}"

11
joplin/.env.dist Normal file
View file

@ -0,0 +1,11 @@
DB_CLIENT=pg
POSTGRES_PASSWORD=joplin
POSTGRES_DATABASE=joplin
POSTGRES_USER=joplin
POSTGRES_PORT=5432
#POSTGRES_HOST=db
APP_BASE_URL=https://domain.tld
APP_PORT=22300
EXTERNAL_PORT=8030

2
joplin/data/.gitignore vendored Normal file
View file

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

22
joplin/docker-compose.yml Normal file
View file

@ -0,0 +1,22 @@
version: "3.7"
services:
db:
image: postgres:13
volumes:
- ./data/postgres:/var/lib/postgresql/data
expose:
- "5432"
restart: unless-stopped
env_file: .env
app:
image: joplin/server:latest
depends_on:
- db
ports:
- "127.0.0.1:${EXTERNAL_PORT:-8030}:22300"
env_file: .env
environment:
- POSTGRES_HOST=${POSTGRES_HOST:-db}
restart: unless-stopped
user: '${HOST_USER:-0}'

17
joplin/nginx/joplin.conf Normal file
View file

@ -0,0 +1,17 @@
server {
listen 443 ssl http2;
server_name joplin.domain.tld;
access_log /var/log/nginx/joplin.domain.tld.access;
error_log /var/log/nginx/joplin.domain.tld.error;
charset utf-8;
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8030;
}
# Wildcard certificate config
#include ssl/joplin.domain.tld.conf;
}

View file

@ -0,0 +1,6 @@
# see https://cloud.docker.com/repository/docker/skobkin/magneticod-python
MAGNETICO_PORT=64879
# docker-compose substitution
HOST_DB_PATH=/root/.local/share/magneticod
HOST_USER=0

View file

@ -0,0 +1,17 @@
version: '3.7'
services:
magneticod:
image: skobkin/magneticod-python:latest
container_name: magneticod-python
# Using host mode to be able to simply apply firewall rules to disable connection tracking
# https://github.com/boramalper/magnetico/blob/master/cmd/magneticod/README.md#setup
network_mode: "host"
ports:
- "${MAGNETICO_PORT}:${MAGNETICO_PORT}/udp"
env_file: .env
volumes:
- "${HOST_DB_PATH}:/data"
user: "${HOST_USER}"
restart: unless-stopped
command: "--node-addr 0.0.0.0:${MAGNETICO_PORT} --database-file /data/database.sqlite3"

2
mariadb-common/.env.dist Normal file
View file

@ -0,0 +1,2 @@
MYSQL_ROOT_PASSWORD=password
COMMON_DATABASE_NETWORK=database-net

View file

@ -0,0 +1,23 @@
version: '3.7'
services:
mariadb-common:
image: mariadb:10
container_name: mariadb-common
env_file: .env
networks:
- db-network
ports:
- "127.0.0.1:3306:3306/tcp"
volumes:
# Database files
- mariadb-data:/var/lib/mysql
restart: unless-stopped
volumes:
mariadb-data:
networks:
db-network:
name: "${COMMON_DATABASE_NETWORK:-database-network}"
external: true

16
nextcloud/.env.dist Normal file
View file

@ -0,0 +1,16 @@
PUID=1000
PGID=1000
TZ=Europe/Moscow
EXT_PORT=8443
# Volumes
# Database and configs
CONFIG_PATH=/path/to/config
# Location of user files
DATA_PATH=/path/to/data
# Logs
LOG_MAX_SIZE=5m
LOG_MAX_FILE=5

30
nextcloud/README.md Normal file
View file

@ -0,0 +1,30 @@
# Configuration
## Serve HTTP from the container
By default NextCloud internal Nginx config has redirects from internal 80 port
to 443 (HTTPS).
So if you want to reverse-proxy Nextcloud, you'll need to have a plain HTTP
connection to the Nextcloud.
Example of `/config/nginx/site-confs/default` changes:
```
#server {
# listen 80;
# listen [::]:80;
# server_name _;
# return 301 https://$host$request_uri;
#}
server {
#listen 443 ssl http2;
listen 80;
listen [::]:80;
#listen [::]:443 ssl http2;
server_name _;
#ssl_certificate /config/keys/cert.crt;
#ssl_certificate_key /config/keys/cert.key;
```
You'll have access to the Nextcloud Nginx config after first run of Nextcloud
container. Don't forget to configure `/config` bind mount.

View file

@ -0,0 +1,21 @@
version: '3.7'
services:
nextcloud:
# https://hub.docker.com/r/linuxserver/nextcloud
image: linuxserver/nextcloud
container_name: nextcloud
#network_mode: "host"
ports:
# You need to modify /config/nginx/site-confs/default first to allow 80 port
- "127.0.0.1:${EXT_PORT}:80/tcp"
env_file: .env
volumes:
- "${CONFIG_PATH}:/config"
- "${DATA_PATH}:/data"
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "${LOG_MAX_SIZE:-5m}"
max-file: "${LOG_MAX_FILE:-5}"

View file

@ -0,0 +1,18 @@
server {
listen 443 ssl http2;
server_name nextcloud.server.tld;
#access_log /var/log/nginx/nextcloud.server.tld.access;
error_log /var/log/nginx/nextcloud.server.tld.error;
charset utf-8;
location / {
proxy_pass http://127.0.0.1:8443;
}
#include config/gzip.conf;
# Wildcard certificate config
#include ssl/server.tld.conf;
}

View file

@ -0,0 +1,2 @@
POSTGRES_PASSWORD=password
COMMON_DATABASE_NETWORK=database-net

View file

@ -0,0 +1,23 @@
version: '3.7'
services:
postgres-common:
image: postgres:12-alpine
container_name: postgres-common
env_file: .env
networks:
- db-network
ports:
- "127.0.0.1:5432:5432/tcp"
volumes:
# Database files
- postgres-data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
postgres-data:
networks:
db-network:
name: "${COMMON_DATABASE_NETWORK:-database-network}"
external: true

9
wireguard/.env.dist Normal file
View file

@ -0,0 +1,9 @@
# https://hub.docker.com/r/cmulk/wireguard-docker
PORT=5555
# Configuration directory where Wireguard configuration will be stored.
CONFIG_DIR=./config
LOG_MAX_SIZE=5m
LOG_MAX_FILE=5

2
wireguard/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
config/*
!config/.gitkeep

50
wireguard/README.md Normal file
View file

@ -0,0 +1,50 @@
# Wireguard VPN
![Wireguard Logo](https://www.wireguard.com/img/wireguard.svg)
## Basic configuration
### Create config files
```shell
cp examples/server/wg0.conf.dist config/wg0.conf
```
You can edit configuration according to your needs.
### Generate keys
Don't forget to set public and private keys for the server and client!
To get the keys you can use `genkeys` command:
```shell
docker-compose run wireguard genkeys
```
Output example:
```
Private Key: aAaAAaaaAAaa+AAaAaAaAA1aa/aaAA1aaaaAa1aaaA1=
Public Key: /11a1aAaA1a/AAa11AAaa1AAa/AaAA1a1aaa11/AaAa=
```
Not you can use these keys in your configuration file.
## Additional requirements
### Kernel module
You need to be sure that [Wireguard](https://www.wireguard.com/install/) kernel module is installed on the host system.
#### Ubuntu / Debian
For kernel versions [older than 5.6](https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.6-Released):
```shell
apt-get install -y --no-install-recommends wireguard-dkms
```
### See also
You can also check Docker image instructions [here](https://hub.docker.com/r/cmulk/wireguard-docker).

View file

View file

@ -0,0 +1,26 @@
version: '3.7'
services:
wireguard:
# https://hub.docker.com/r/cmulk/wireguard-docker
image: cmulk/wireguard-docker:alpine
container_name: wireguard
volumes:
- "${CONFIG_DIR:-./config}:/etc/wireguard:ro"
networks:
- network
ports:
- "${PORT:-5555}:5555/udp"
env_file: .env
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
logging:
driver: "json-file"
options:
max-size: "${LOG_MAX_SIZE:-5m}"
max-file: "${LOG_MAX_FILE:-5}"
networks:
network:

View file

@ -0,0 +1,10 @@
[Interface]
Address = 192.168.20.2/24
PrivateKey = <client_private_key>
ListenPort = 0 #needed for some clients to accept the config
[Peer]
PublicKey = <server_public_key>
Endpoint = <server_public_ip>:5555
AllowedIPs = 0.0.0.0/0,::/0 #makes sure ALL traffic routed through VPN
PersistentKeepalive =

View file

@ -0,0 +1,9 @@
# https://github.com/cmulk/wireguard-docker#configuration
[Interface]
Address = 192.168.20.1/24
PrivateKey = <server_private_key>
ListenPort = 5555
[Peer]
PublicKey = <client_public_key>
AllowedIPs = 192.168.20.2

7
wordpress/.env.dist Normal file
View file

@ -0,0 +1,7 @@
FPM_EXT_PORT=9000
MYSQL_HOST=mariadb-common
MYSQL_USER=username
MYSQL_PASSWORD=password
MYSQL_DATABASE=database
THEMES_DIR=./themes
PLUGINS_DIR=./plugins

View file

@ -0,0 +1,16 @@
version: '3.7'
services:
wordpress:
image: 'wordpress:php7.3-fpm-alpine'
restart: unless-stopped
ports:
- '127.0.0.1:${FPM_EXT_PORT}:9000'
environment:
WORDPRESS_DB_HOST: '${MYSQL_HOST:-mariadb-common}'
WORDPRESS_DB_USER: '${MYSQL_USER}'
WORDPRESS_DB_PASSWORD: '${MYSQL_PASSWORD}'
WORDPRESS_DB_NAME: '${MYSQL_DATABASE}'
volumes:
- '${THEMES_DIR}:/var/www/html/wp-content/themes'
- '${PLUGINS_DIR}:/var/www/html/wp-content/plugins'