Compare commits
16 Commits
a2dcfaf4a4
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 25a3121748 | |||
|
|
42cdbeeb02 | ||
|
|
1351d9d0a0 | ||
|
|
dc98c7080a | ||
|
|
3515d1f2d2 | ||
|
|
3ec7edfc87 | ||
|
|
754acd3544 | ||
|
|
cc9bad6569 | ||
|
|
3a69c4b3f8 | ||
|
|
9c4534330c | ||
|
|
7a3c868e98 | ||
|
|
6e813a5e99 | ||
|
|
fc9802bbde | ||
|
|
bcdb981807 | ||
|
|
0eb4b91639 | ||
|
|
212833ca3c |
@@ -3,6 +3,6 @@ This repository is for documenting my homelab. Most documentation is found in t
|
|||||||
|
|
||||||
I use docker for all of my services that I run with a docker compose file. I use ssh through a peer to peer vpn service called [Tailscale](https://tailscale.com/). Tailscale has functionality to store ssh keys and makes managing them very simple and easy with github accounts.
|
I use docker for all of my services that I run with a docker compose file. I use ssh through a peer to peer vpn service called [Tailscale](https://tailscale.com/). Tailscale has functionality to store ssh keys and makes managing them very simple and easy with github accounts.
|
||||||
|
|
||||||
The homelab is run off of a dedicated server running a headless instance of Arch Linux. Arch linux is my Distro of preference however if I were to run a server that is required for reliability I would most likely prefer RedHat or similar for a stable environment over rolling release Arch.
|
The homelab is run off of a dedicated server running a headless instance of Arch Linux. Arch linux is my Distro of preference however if I were to run a server that is required for reliability I would most likely prefer RedHat or similar for a stable environment over rolling release Arch but so far Arch has been fine.
|
||||||
|
|
||||||
Caddy is currently used to share my publicly facing services with a subdomain of mintyserver.net eg https://git.mintyserver.net. Not all services are reverse proxied such as my pihole as they are only needed to be accessed by me and therefore only accessible via local or vpn connections.
|
Caddy is currently used to share my publicly facing services with a subdomain of archox.org eg https://git.archox.org. Not all services are reverse proxied such as my DNS server as they are only needed to be accessed by me and therefore only accessible via local or vpn connections.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ services:
|
|||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=America/Chicago
|
- TZ=America/Chicago
|
||||||
- APP_URL=https://bookstack.mintyserver.net
|
- APP_URL=https://bookstack.archfox.org
|
||||||
- APP_KEY=${BOOKKEY}
|
- APP_KEY=${BOOKKEY}
|
||||||
- DB_HOST=bookstack_db
|
- DB_HOST=bookstack_db
|
||||||
- DB_PORT=3306
|
- DB_PORT=3306
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ services:
|
|||||||
container_name: vaultwarden
|
container_name: vaultwarden
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
DOMAIN: "https://vault.mintyserver.net"
|
DOMAIN: "https://vault.archfox.org"
|
||||||
WEBSOCKET_ENABLED: true
|
WEBSOCKET_ENABLED: true
|
||||||
SIGNUPS_ALLOWED: false
|
SIGNUPS_ALLOWED: false
|
||||||
ADMIN_TOKEN: ${PASS}
|
ADMIN_TOKEN: ${PASS}
|
||||||
|
|||||||
@@ -28,5 +28,4 @@ networks:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
jellyfin:
|
jellyfin:
|
||||||
name: jellyfin
|
|
||||||
external: true
|
external: true
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ services:
|
|||||||
shoko:
|
shoko:
|
||||||
shm_size: 256m
|
shm_size: 256m
|
||||||
container_name: shoko
|
container_name: shoko
|
||||||
image: shokoanime/server:daily
|
image: shokoanime/server:latest
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
- "PUID=1000"
|
- "PUID=1000"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
caddy:
|
caddy:
|
||||||
image: caddy:latest
|
image: ghcr.io/caddybuilds/caddy-cloudflare:latest
|
||||||
container_name: caddy
|
container_name: caddy
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
cap_add:
|
cap_add:
|
||||||
@@ -14,6 +14,10 @@ services:
|
|||||||
- caddy_srv:/srv
|
- caddy_srv:/srv
|
||||||
- caddy_data:/data
|
- caddy_data:/data
|
||||||
- caddy_config:/config
|
- caddy_config:/config
|
||||||
|
environment:
|
||||||
|
- CLOUDFLARE_API_TOKEN=${CF_CADDY_KEY}
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
networks:
|
networks:
|
||||||
- caddy
|
- caddy
|
||||||
|
|
||||||
@@ -35,3 +39,5 @@ volumes:
|
|||||||
caddy_set:
|
caddy_set:
|
||||||
name: caddy_set
|
name: caddy_set
|
||||||
external: true
|
external: true
|
||||||
|
caddy_html:
|
||||||
|
external: true
|
||||||
|
|||||||
14
docker-compose.d/Networking/ddns.yml
Normal file
14
docker-compose.d/Networking/ddns.yml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
services:
|
||||||
|
cloudflare-ddns:
|
||||||
|
container_name: ddns
|
||||||
|
image: favonia/cloudflare-ddns:latest
|
||||||
|
network_mode: host
|
||||||
|
restart: always
|
||||||
|
user: "1000:1000"
|
||||||
|
read_only: true
|
||||||
|
cap_drop: [all]
|
||||||
|
security_opt: [no-new-privileges:true]
|
||||||
|
environment:
|
||||||
|
- CLOUDFLARE_API_TOKEN=${CFKEY}
|
||||||
|
- DOMAINS=archfox.org, jelly.archfox.org, searxng.archfox.org, bookstack.archfox.org, vault.archfox.org, git.archfox.org, nextcloud.archfox.org, aria.archfox.org, wings.archfox.org, panel.archfox.org, omada.archfox.org, mc.archfox.org, ai.archfox.org, p.archfox.org, actual.archfox.org
|
||||||
|
- PROXIED=false
|
||||||
23
docker-compose.d/Networking/omada.yml
Normal file
23
docker-compose.d/Networking/omada.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
services:
|
||||||
|
omada:
|
||||||
|
container_name: omada
|
||||||
|
image: mbentley/omada-controller:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
ulimits:
|
||||||
|
nofile:
|
||||||
|
soft: 4096
|
||||||
|
hard: 8192
|
||||||
|
stop_grace_period: 60s
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
- TZ=America/Chicago
|
||||||
|
volumes:
|
||||||
|
- omada-data:/opt/tplink/EAPController/data
|
||||||
|
- omada-logs:/opt/tplink/EAPController/logs
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
omada-data:
|
||||||
|
external: true
|
||||||
|
omada-logs:
|
||||||
|
external: true
|
||||||
27
docker-compose.d/Tools/actual.yml
Normal file
27
docker-compose.d/Tools/actual.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
services:
|
||||||
|
actual_server:
|
||||||
|
container_name: actual
|
||||||
|
image: docker.io/actualbudget/actual-server:latest
|
||||||
|
environment:
|
||||||
|
- ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=100
|
||||||
|
- ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=100
|
||||||
|
- ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=100
|
||||||
|
volumes:
|
||||||
|
- actual-data:/data
|
||||||
|
networks:
|
||||||
|
- caddy
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD-SHELL', 'node src/scripts/health-check.js']
|
||||||
|
interval: 60s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 20s
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
actual-data:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
networks:
|
||||||
|
caddy:
|
||||||
|
external: true
|
||||||
21
docker-compose.d/Tools/open-webui.yml
Normal file
21
docker-compose.d/Tools/open-webui.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
services:
|
||||||
|
open-webui:
|
||||||
|
container_name: open-webui
|
||||||
|
image: ghcr.io/open-webui/open-webui:main
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- OLLAMA_BASE_URL=http://poslop-w:11434
|
||||||
|
volumes:
|
||||||
|
- open-webui:/app/backend/data
|
||||||
|
networks:
|
||||||
|
- caddy
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
open-webui:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
networks:
|
||||||
|
caddy:
|
||||||
|
name: caddy
|
||||||
|
external: true
|
||||||
@@ -12,7 +12,7 @@ services:
|
|||||||
- 3333:3333
|
- 3333:3333
|
||||||
- 37889:37889
|
- 37889:37889
|
||||||
command: >-
|
command: >-
|
||||||
--wallet "48Whozrwq4jDA6JZ3vJw3Z22VFCCdi4MnLDH5WfHX33w8ehHZ3hRsJC6JBFmgau8BjbXzfL6Um1GdGNfzzbqueDGPhSusji"
|
--wallet "452KRkV1ekYiMh1iy6g3TWbBUGjcJLZH8NYbcd8uaso7Z65CxHsjCmshNaRikDWnRy84kkDZxSfw7DXitNQvhpPW3rmRasA"
|
||||||
--stratum "0.0.0.0:3333" --p2p "0.0.0.0:37889" --rpc-port "18089"
|
--stratum "0.0.0.0:3333" --p2p "0.0.0.0:37889" --rpc-port "18089"
|
||||||
--host "monerod"
|
--host "monerod"
|
||||||
--loglevel 1
|
--loglevel 1
|
||||||
|
|||||||
45
docker-compose.d/Tools/pastefy.yml
Normal file
45
docker-compose.d/Tools/pastefy.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
services:
|
||||||
|
pastedb:
|
||||||
|
container_name: pastedb
|
||||||
|
image: mariadb:10.11
|
||||||
|
volumes:
|
||||||
|
- pastedb:/var/lib/mysql
|
||||||
|
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: pastefy
|
||||||
|
MYSQL_DATABASE: pastefy
|
||||||
|
MYSQL_USER: pastefy
|
||||||
|
MYSQL_PASSWORD: pastefy
|
||||||
|
networks:
|
||||||
|
- pastefy
|
||||||
|
|
||||||
|
pastefy:
|
||||||
|
container_name: pastefy
|
||||||
|
depends_on:
|
||||||
|
- pastedb
|
||||||
|
image: interaapps/pastefy:latest
|
||||||
|
|
||||||
|
environment:
|
||||||
|
HTTP_SERVER_PORT: 80
|
||||||
|
HTTP_SERVER_CORS: "*"
|
||||||
|
DATABASE_DRIVER: mysql
|
||||||
|
DATABASE_NAME: pastefy
|
||||||
|
DATABASE_USER: pastefy
|
||||||
|
DATABASE_PASSWORD: pastefy
|
||||||
|
DATABASE_HOST: pastedb
|
||||||
|
DATABASE_PORT: 3306
|
||||||
|
SERVER_NAME: "https://p.archfox.org"
|
||||||
|
networks:
|
||||||
|
- caddy
|
||||||
|
- pastefy
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pastedb:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
networks:
|
||||||
|
pastefy:
|
||||||
|
name: pastefy
|
||||||
|
caddy:
|
||||||
|
name: caddy
|
||||||
|
external: true
|
||||||
@@ -19,7 +19,7 @@ services:
|
|||||||
|
|
||||||
|
|
||||||
gluetun:
|
gluetun:
|
||||||
image: ghcr.io/qdm12/gluetun
|
image: qmcgaw/gluetun:v3
|
||||||
cap_add:
|
cap_add:
|
||||||
- NET_ADMIN
|
- NET_ADMIN
|
||||||
container_name: gluetun
|
container_name: gluetun
|
||||||
@@ -27,12 +27,14 @@ services:
|
|||||||
- VPN_SERVICE_PROVIDER=mullvad
|
- VPN_SERVICE_PROVIDER=mullvad
|
||||||
- VPN_TYPE=wireguard
|
- VPN_TYPE=wireguard
|
||||||
- WIREGUARD_PRIVATE_KEY=${MULLKEY}
|
- WIREGUARD_PRIVATE_KEY=${MULLKEY}
|
||||||
- WIREGUARD_ADDRESSES=10.73.138.162/32
|
- WIREGUARD_ADDRESSES=10.75.99.140/32
|
||||||
|
- SERVER_COUNTRIES=USA
|
||||||
- SERVER_CITIES=Chicago IL
|
- SERVER_CITIES=Chicago IL
|
||||||
|
#- DNS_ADDRESS=10.64.0.1
|
||||||
volumes:
|
volumes:
|
||||||
- gluetun:/gluetun
|
- gluetun:/gluetun
|
||||||
devices:
|
devices:
|
||||||
- /dev/net/tun
|
- /dev/net/tun:/dev/net/tun
|
||||||
ports:
|
ports:
|
||||||
- 8181:8181
|
- 8181:8181
|
||||||
- 6881:6881
|
- 6881:6881
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ services:
|
|||||||
image: searxng/searxng:latest
|
image: searxng/searxng:latest
|
||||||
container_name: searxng
|
container_name: searxng
|
||||||
environment:
|
environment:
|
||||||
- BASE_URL=https://searxng.mintyserver.net
|
- BASE_URL=https://searxng.archfox.org
|
||||||
volumes:
|
volumes:
|
||||||
- searxng:/etc/searxng
|
- searxng:/etc/searxng
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
6
docker-compose.d/Tools/watchtower.yml
Normal file
6
docker-compose.d/Tools/watchtower.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
services:
|
||||||
|
watchtower:
|
||||||
|
container_name: watchtower
|
||||||
|
image: containrrr/watchtower
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
@@ -16,12 +16,18 @@ services=(
|
|||||||
"Media/shoko.yml"
|
"Media/shoko.yml"
|
||||||
"Networking/technitium.yml"
|
"Networking/technitium.yml"
|
||||||
"Networking/caddy.yml"
|
"Networking/caddy.yml"
|
||||||
|
"Networking/omada.yml"
|
||||||
|
"Networking/ddns.yml"
|
||||||
"Tools/searxng.yml"
|
"Tools/searxng.yml"
|
||||||
"Tools/monerod.yml"
|
"Tools/monerod.yml"
|
||||||
"Tools/p2pool.yml"
|
"Tools/p2pool.yml"
|
||||||
"Tools/ariang.yml"
|
"Tools/ariang.yml"
|
||||||
"Tools/nextcloud-aio.yml"
|
"Tools/nextcloud-aio.yml"
|
||||||
"Tools/qbit.yml"
|
"Tools/qbit.yml"
|
||||||
|
"Tools/open-webui.yml"
|
||||||
|
"Tools/watchtower.yml"
|
||||||
|
"Tools/pastefy.yml"
|
||||||
|
"Tools/actual.yml"
|
||||||
"pterodactyl/docker-compose.yml"
|
"pterodactyl/docker-compose.yml"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -34,7 +40,7 @@ for service in "${services[@]}"; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Add the up command to the final docker compose command
|
# Add the up command to the final docker compose command
|
||||||
COMPOSE_COMMAND+=" up -d"
|
COMPOSE_COMMAND+=" --profile panel --profile daemon up -d"
|
||||||
|
|
||||||
# Execute the composed command
|
# Execute the composed command
|
||||||
eval $COMPOSE_COMMAND
|
eval $COMPOSE_COMMAND
|
||||||
|
|||||||
Reference in New Issue
Block a user