feat: docker compose files for new homelab services
21
beszel-agent/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
services:
|
||||||
|
beszel-agent:
|
||||||
|
image: henrygd/beszel-agent:latest
|
||||||
|
container_name: beszel-agent
|
||||||
|
restart: unless-stopped
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- beszel_agent_data:/var/lib/beszel-agent
|
||||||
|
- beszel_socket:/beszel_socket
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
environment:
|
||||||
|
LISTEN: /beszel_socket/beszel.sock
|
||||||
|
HUB_URL: http://192.168.12.151:8091
|
||||||
|
TOKEN: EvrIZdupNHXJyEFdMpAa
|
||||||
|
KEY: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHK3ckn/gTe88kj1KLkRyYr4rX765k0d8nFDrVvJnXUF"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
beszel_agent_data:
|
||||||
|
beszel_socket:
|
||||||
|
external: True
|
||||||
|
name: beszel_beszel_socket
|
||||||
14
beszel/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
services:
|
||||||
|
beszel:
|
||||||
|
image: henrygd/beszel:latest
|
||||||
|
container_name: beszel
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 8091:8090
|
||||||
|
volumes:
|
||||||
|
- beszel_data:/beszel_data
|
||||||
|
- beszel_socket:/beszel_socket
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
beszel_data:
|
||||||
|
beszel_socket:
|
||||||
20
calibre/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
services:
|
||||||
|
calibre-web:
|
||||||
|
image: lscr.io/linuxserver/calibre-web:latest
|
||||||
|
container_name: calibre-web
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Etc/UTC
|
||||||
|
- OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional
|
||||||
|
volumes:
|
||||||
|
- calibre_web_config:/config
|
||||||
|
- ebooks_library:/books
|
||||||
|
ports:
|
||||||
|
- 8083:8083
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
calibre_web_config:
|
||||||
|
ebooks_library:
|
||||||
|
external: True
|
||||||
294
dashy/config.yml
Normal file
|
|
@ -0,0 +1,294 @@
|
||||||
|
pageInfo:
|
||||||
|
title: TheoCloud Services
|
||||||
|
description: Embrace privacy & live like a duck!
|
||||||
|
navLinks:
|
||||||
|
- title: Personal Github
|
||||||
|
path: https://github.com/
|
||||||
|
target: newtab
|
||||||
|
- title: Dashy Documentation
|
||||||
|
path: https://dashy.to/docs
|
||||||
|
target: newtab
|
||||||
|
footerText: Ducks also live a dangerous life!
|
||||||
|
appConfig:
|
||||||
|
theme: dashy-docs
|
||||||
|
layout: auto
|
||||||
|
iconSize: large
|
||||||
|
startingView: default
|
||||||
|
defaultOpeningMethod: newtab
|
||||||
|
statusCheck: false
|
||||||
|
statusCheckInterval: 0
|
||||||
|
faviconApi: duckduckgo
|
||||||
|
routingMode: history
|
||||||
|
enableMultiTasking: false
|
||||||
|
widgetsAlwaysUseProxy: false
|
||||||
|
webSearch:
|
||||||
|
disableWebSearch: false
|
||||||
|
searchEngine: duckduckgo
|
||||||
|
openingMethod: newtab
|
||||||
|
searchBangs: {}
|
||||||
|
enableFontAwesome: true
|
||||||
|
enableMaterialDesignIcons: false
|
||||||
|
hideComponents:
|
||||||
|
hideHeading: false
|
||||||
|
hideNav: false
|
||||||
|
hideSearch: false
|
||||||
|
hideSettings: false
|
||||||
|
hideFooter: false
|
||||||
|
auth:
|
||||||
|
enableGuestAccess: false
|
||||||
|
users:
|
||||||
|
- user: theo
|
||||||
|
hash: 0475924e1769394a501610b4070face6ad35f760c53f093569825054693adf05
|
||||||
|
type: admin
|
||||||
|
enableOidc: false
|
||||||
|
oidc:
|
||||||
|
adminRole: 'false'
|
||||||
|
adminGroup: 'false'
|
||||||
|
enableHeaderAuth: false
|
||||||
|
headerAuth:
|
||||||
|
userHeader: REMOTE_USER
|
||||||
|
proxyWhitelist: []
|
||||||
|
enableKeycloak: false
|
||||||
|
showSplashScreen: true
|
||||||
|
preventWriteToDisk: false
|
||||||
|
preventLocalSave: false
|
||||||
|
disableConfiguration: false
|
||||||
|
disableConfigurationForNonAdmin: false
|
||||||
|
allowConfigEdit: true
|
||||||
|
enableServiceWorker: false
|
||||||
|
disableContextMenu: false
|
||||||
|
disableUpdateChecks: false
|
||||||
|
disableSmartSort: false
|
||||||
|
enableErrorReporting: false
|
||||||
|
sections:
|
||||||
|
- name: Server Management
|
||||||
|
icon: si-docker
|
||||||
|
items:
|
||||||
|
- title: Portainer
|
||||||
|
description: Docker Management Tool for Containerization and Deployment
|
||||||
|
icon: >-
|
||||||
|
https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_100/https%3A%2F%2Fapi.charmhub.io%2Fapi%2Fv1%2Fmedia%2Fdownload%2Fcharm_cMu7M9K6a65FsKZvrLZOZwyQradwbs7E_icon_5cef79c2d18f67464f39c8f2cf2d7ebb815b0071f04d3ffbb94f49fddd3ab666.png
|
||||||
|
url: https://192.168.12.151:9443
|
||||||
|
target: newtab
|
||||||
|
id: 0_1684_portainer
|
||||||
|
- title: BESZEL Monitoring
|
||||||
|
description: System Usage Monitor
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/beszel-light.svg
|
||||||
|
url: https://monitoring.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 1_1684_beszelmonitoring
|
||||||
|
- title: Cloudflare Tunnel DNS
|
||||||
|
description: DNS Management for Domain
|
||||||
|
icon: >-
|
||||||
|
https://img.icons8.com/external-tal-revivo-color-tal-revivo/96/external-cloudflare-provides-content-delivery-network-services-ddos-mitigation-logo-color-tal-revivo.png
|
||||||
|
url: >-
|
||||||
|
https://one.dash.cloudflare.com/c2b08d3c0457044067683295a304bd0c/networks/tunnels/cfd_tunnel/ab494eb6-8d03-4fb2-b127-9b48bfe95487/edit?tab=publicHostname
|
||||||
|
target: newtab
|
||||||
|
id: 2_1684_cloudflaretunneldns
|
||||||
|
- title: Uptime Kuma
|
||||||
|
description: Uptime Monitoring of services
|
||||||
|
icon: >-
|
||||||
|
https://raw.githubusercontent.com/louislam/uptime-kuma/refs/heads/master/public/icon.svg
|
||||||
|
url: https://uptime.theocloud.dev/dashboard
|
||||||
|
target: newtab
|
||||||
|
id: 3_1684_uptimekuma
|
||||||
|
- title: Adguard DNS
|
||||||
|
description: DNS Server with Adblock
|
||||||
|
icon: >-
|
||||||
|
https://user-images.githubusercontent.com/4099637/55673103-35487300-5871-11e9-837d-8e8b1e785bed.png
|
||||||
|
url: http://192.168.12.151/
|
||||||
|
target: newtab
|
||||||
|
id: 4_1684_adguarddns
|
||||||
|
- title: Git
|
||||||
|
description: Private Forgejo Git instance
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/forgejo.svg
|
||||||
|
url: https://git.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 5_1684_git
|
||||||
|
- title: Duplicati
|
||||||
|
description: Backup Management
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/duplicati.svg
|
||||||
|
url: https://duplicati.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 6_1684_duplicati
|
||||||
|
displayData:
|
||||||
|
sortBy: default
|
||||||
|
rows: 2
|
||||||
|
cols: 1
|
||||||
|
collapsed: false
|
||||||
|
hideForGuests: false
|
||||||
|
- name: File Storage & Management
|
||||||
|
icon: si-thunderstore
|
||||||
|
displayData:
|
||||||
|
sortBy: default
|
||||||
|
rows: 1
|
||||||
|
cols: 1
|
||||||
|
collapsed: false
|
||||||
|
hideForGuests: false
|
||||||
|
items:
|
||||||
|
- title: Filebrowser
|
||||||
|
description: File Management Server
|
||||||
|
icon: https://filebrowser.org/static/logo.png
|
||||||
|
url: https://drive.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 0_2264_filebrowser
|
||||||
|
- title: Immich
|
||||||
|
description: Backup your photos and videos!
|
||||||
|
icon: >-
|
||||||
|
data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2028.3.0,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Flower'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20792%20792'%20style='enable-background:new%200%200%20792%20792;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e%20.st0{fill:%23FA2921;}%20.st1{fill:%23ED79B5;}%20.st2{fill:%23FFB400;}%20.st3{fill:%231E83F7;}%20.st4{fill:%2318C249;}%20%3c/style%3e%3cg%20id='Flower_00000077325900055813483940000000694823054982625702_'%3e%3cpath%20class='st0'%20d='M375.48,267.63c38.64,34.21,69.78,70.87,89.82,105.42c34.42-61.56,57.42-134.71,57.71-181.3%20c0-0.33,0-0.63,0-0.91c0-68.94-68.77-95.77-128.01-95.77s-128.01,26.83-128.01,95.77c0,0.94,0,2.2,0,3.72%20C300.01,209.24,339.15,235.47,375.48,267.63z'/%3e%3cpath%20class='st1'%20d='M164.7,455.63c24.15-26.87,61.2-55.99,103.01-80.61c44.48-26.18,88.97-44.47,128.02-52.84%20c-47.91-51.76-110.37-96.24-154.6-110.91c-0.31-0.1-0.6-0.19-0.86-0.28c-65.57-21.3-112.34,35.81-130.64,92.15%20c-18.3,56.34-14.04,130.04,51.53,151.34C162.05,454.77,163.25,455.16,164.7,455.63z'/%3e%3cpath%20class='st2'%20d='M681.07,302.19c-18.3-56.34-65.07-113.45-130.64-92.15c-0.9,0.29-2.1,0.68-3.54,1.15%20c-3.75,35.93-16.6,81.27-35.96,125.76c-20.59,47.32-45.84,88.27-72.51,118c69.18,13.72,145.86,12.98,190.26-1.14%20c0.31-0.1,0.6-0.2,0.86-0.28C695.11,432.22,699.37,358.52,681.07,302.19z'/%3e%3cpath%20class='st3'%20d='M336.54,510.71c-11.15-50.39-14.8-98.36-10.7-138.08c-64.03,29.57-125.63,75.23-153.26,112.76%20c-0.19,0.26-0.37,0.51-0.53,0.73c-40.52,55.78-0.66,117.91,47.27,152.72c47.92,34.82,119.33,53.54,159.86-2.24%20c0.56-0.76,1.3-1.78,2.19-3.01C363.28,602.32,347.02,558.08,336.54,510.71z'/%3e%3cpath%20class='st4'%20d='M617.57,482.52c-35.33,7.54-82.42,9.33-130.72,4.66c-51.37-4.96-98.11-16.32-134.63-32.5%20c8.33,70.03,32.73,142.73,59.88,180.6c0.19,0.26,0.37,0.51,0.53,0.73c40.52,55.78,111.93,37.06,159.86,2.24%20c47.92-34.82,87.79-96.95,47.27-152.72C619.2,484.77,618.46,483.75,617.57,482.52z'/%3e%3c/g%3e%3c/svg%3e
|
||||||
|
url: https://immich.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 1_2264_immich
|
||||||
|
- title: StirlingPDF
|
||||||
|
description: Private PDF tools
|
||||||
|
icon: >-
|
||||||
|
https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling.png
|
||||||
|
url: https://pdf.theocloud.dev/?lang=en_US
|
||||||
|
target: newtab
|
||||||
|
id: 2_2264_stirlingpdf
|
||||||
|
- title: PrivateBin
|
||||||
|
description: Pastebin tool
|
||||||
|
icon: https://avatars.githubusercontent.com/u/20367028?s=200&v=4
|
||||||
|
url: https://privatebin.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 3_2264_privatebin
|
||||||
|
- name: Media Automation
|
||||||
|
icon: si-jellyfin
|
||||||
|
displayData:
|
||||||
|
sortBy: last-used
|
||||||
|
rows: 1
|
||||||
|
cols: 1
|
||||||
|
collapsed: false
|
||||||
|
hideForGuests: false
|
||||||
|
items:
|
||||||
|
- title: Jellyseerr
|
||||||
|
description: Media Requests
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/jellyseerr.svg
|
||||||
|
url: https://jellyseerr.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 0_1569_jellyseerr
|
||||||
|
- title: Jellyfin
|
||||||
|
description: Media Library
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/jellyfin.svg
|
||||||
|
url: https://jellyfin.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 1_1569_jellyfin
|
||||||
|
- title: Sonarr
|
||||||
|
description: TV Show Management
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sonarr.svg
|
||||||
|
url: http://192.168.12.151:8989/
|
||||||
|
target: newtab
|
||||||
|
id: 2_1569_sonarr
|
||||||
|
- title: Radarr
|
||||||
|
description: Movie Management
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/radarr.svg
|
||||||
|
url: http://192.168.12.151:7878/
|
||||||
|
target: newtab
|
||||||
|
id: 3_1569_radarr
|
||||||
|
- title: Prowlarr
|
||||||
|
description: Indexer Management
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/prowlarr.svg
|
||||||
|
url: http://192.168.12.151:9696/
|
||||||
|
target: newtab
|
||||||
|
id: 4_1569_prowlarr
|
||||||
|
- title: Bazarr
|
||||||
|
description: Subtitle Management
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/bazarr.svg
|
||||||
|
url: http://192.168.12.151:6767/
|
||||||
|
target: newtab
|
||||||
|
id: 5_1569_bazarr
|
||||||
|
- title: NZBGet
|
||||||
|
description: Usenet Download Client
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/nzbget.svg
|
||||||
|
url: http://192.168.12.151:6789/
|
||||||
|
target: newtab
|
||||||
|
id: 6_1569_nzbget
|
||||||
|
- title: qBittorrent
|
||||||
|
description: Torrent Download Client
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/qbittorrent.svg
|
||||||
|
url: http://192.168.12.151:8181/
|
||||||
|
target: newtab
|
||||||
|
id: 7_1569_qbittorrent
|
||||||
|
- title: SceneNZB
|
||||||
|
description: Usenet Indexer
|
||||||
|
icon: >-
|
||||||
|
https://img.house-of-usenet.com/fd4bd542330506d41778e81860f29435c7f8795a7bbefbd9d297b7d79d5a067b.webp
|
||||||
|
url: https://scenenzbs.com/
|
||||||
|
target: newtab
|
||||||
|
id: 8_1569_scenenzb
|
||||||
|
- name: Useful Tools
|
||||||
|
icon: si-framework
|
||||||
|
displayData:
|
||||||
|
sortBy: default
|
||||||
|
rows: 1
|
||||||
|
cols: 1
|
||||||
|
collapsed: false
|
||||||
|
hideForGuests: false
|
||||||
|
items:
|
||||||
|
- title: Overleaf
|
||||||
|
description: Latex Editor
|
||||||
|
icon: >-
|
||||||
|
https://images.ctfassets.net/nrgyaltdicpt/3nesOc6iRhdzatUCC5OKWo/ea0fc03647a5f6a903a9aacc357481b2/overleaf-o-logo-primary.jpg
|
||||||
|
url: https://overleaf.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 0_1189_overleaf
|
||||||
|
- title: OpenChat
|
||||||
|
description: Ollama Chat UI
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/open-webui-light.svg
|
||||||
|
url: https://chat.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 1_1189_openchat
|
||||||
|
- title: Mealie
|
||||||
|
description: Cooking recipes management
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/mealie.svg
|
||||||
|
url: https://mealie.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 2_1189_mealie
|
||||||
|
- title: n8n
|
||||||
|
description: Workflow Management for Automation
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/n8n.svg
|
||||||
|
url: https://n8n.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 3_1189_nn
|
||||||
|
- title: Glance
|
||||||
|
description: Dashboard for News and Media
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/glance.svg
|
||||||
|
url: https://home.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 4_1189_glance
|
||||||
|
- title: Toolbox
|
||||||
|
description: Tool collection
|
||||||
|
icon: >-
|
||||||
|
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/tooljet-dark.svg
|
||||||
|
url: https://toolbox.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 5_1189_toolbox
|
||||||
|
- name: Online Media
|
||||||
|
icon: si-pcgamingwiki
|
||||||
|
displayData:
|
||||||
|
sortBy: default
|
||||||
|
rows: 1
|
||||||
|
cols: 1
|
||||||
|
collapsed: false
|
||||||
|
hideForGuests: false
|
||||||
|
items:
|
||||||
|
- title: Kavita
|
||||||
|
description: Read ebooks online
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/kavita.svg
|
||||||
|
url: https://read.theocloud.dev
|
||||||
|
target: newtab
|
||||||
|
id: 0_1125_kavita
|
||||||
|
- title: Retro Emulator
|
||||||
|
description: Retro Games Emulator with games!
|
||||||
|
icon: https://icon-library.com/images/arcade-icon/arcade-icon-2.jpg
|
||||||
|
url: https://retro.theocloud.dev/
|
||||||
|
target: newtab
|
||||||
|
id: 1_1125_retroemulator
|
||||||
22
dashy/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
services:
|
||||||
|
dashy:
|
||||||
|
image: lissy93/dashy:latest
|
||||||
|
container_name: dashy
|
||||||
|
volumes:
|
||||||
|
- ./config.yml:/app/user-data/conf.yml
|
||||||
|
ports:
|
||||||
|
- 9999:8080
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
# Specify your user ID and group ID. You can find this by running `id -u` and `id -g`
|
||||||
|
- UID=1000
|
||||||
|
- GID=1000
|
||||||
|
# Specify restart policy
|
||||||
|
restart: unless-stopped
|
||||||
|
# Configure healthchecks
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD', 'node', '/app/services/healthcheck']
|
||||||
|
interval: 1m30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 40s
|
||||||
107
dockploy/install-chatgpt.sh
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
install_dokploy() {
|
||||||
|
if [ "$(id -u)" != "0" ]; then
|
||||||
|
echo "This script must be run as root" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(uname)" = "Darwin" ]; then
|
||||||
|
echo "This script must be run on Linux" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /.dockerenv ]; then
|
||||||
|
echo "This script must be run on Linux" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
command_exists() {
|
||||||
|
command -v "$@" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
if command_exists docker; then
|
||||||
|
echo "Docker already installed"
|
||||||
|
else
|
||||||
|
curl -sSL https://get.docker.com | sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command_exists docker compose; then
|
||||||
|
echo "Docker Compose already installed"
|
||||||
|
else
|
||||||
|
echo "Installing Docker Compose..."
|
||||||
|
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||||
|
chmod +x /usr/local/bin/docker-compose
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p /etc/dokploy
|
||||||
|
chmod 777 /etc/dokploy
|
||||||
|
|
||||||
|
cat <<EOF > /etc/dokploy/docker-compose.yml
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:16
|
||||||
|
container_name: dokploy-postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: dokploy
|
||||||
|
POSTGRES_DB: dokploy
|
||||||
|
POSTGRES_PASSWORD: amukds4wi9001583845717ad2
|
||||||
|
volumes:
|
||||||
|
- dokploy-postgres-database:/var/lib/postgresql/data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:7
|
||||||
|
container_name: dokploy-redis
|
||||||
|
volumes:
|
||||||
|
- redis-data-volume:/data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
dokploy:
|
||||||
|
image: dokploy/dokploy:latest
|
||||||
|
container_name: dokploy
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- /etc/dokploy:/etc/dokploy
|
||||||
|
- dokploy-docker-config:/root/.docker
|
||||||
|
environment:
|
||||||
|
- ADVERTISE_ADDR=\${ADVERTISE_ADDR}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
dokploy-postgres-database:
|
||||||
|
redis-data-volume:
|
||||||
|
dokploy-docker-config:
|
||||||
|
EOF
|
||||||
|
|
||||||
|
export ADVERTISE_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
|
echo "Using advertise address: $ADVERTISE_ADDR"
|
||||||
|
|
||||||
|
cd /etc/dokploy
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
GREEN="\033[0;32m"
|
||||||
|
YELLOW="\033[1;33m"
|
||||||
|
BLUE="\033[0;34m"
|
||||||
|
NC="\033[0m"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
printf "${GREEN}Congratulations, Dokploy is installed using Docker Compose!${NC}\n"
|
||||||
|
printf "${YELLOW}Please go to http://localhost:3000 or http://<your-server-ip>:3000${NC}\n\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_dokploy() {
|
||||||
|
echo "Updating Dokploy..."
|
||||||
|
cd /etc/dokploy
|
||||||
|
docker compose pull dokploy
|
||||||
|
docker compose up -d
|
||||||
|
echo "Dokploy has been updated to the latest version."
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$1" = "update" ]; then
|
||||||
|
update_dokploy
|
||||||
|
else
|
||||||
|
install_dokploy
|
||||||
|
fi
|
||||||
201
dockploy/install.sh
Normal file
|
|
@ -0,0 +1,201 @@
|
||||||
|
#!/bin/bash
|
||||||
|
install_dokploy() {
|
||||||
|
if [ "$(id -u)" != "0" ]; then
|
||||||
|
echo "This script must be run as root" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if is Mac OS
|
||||||
|
if [ "$(uname)" = "Darwin" ]; then
|
||||||
|
echo "This script must be run on Linux" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if is running inside a container
|
||||||
|
if [ -f /.dockerenv ]; then
|
||||||
|
echo "This script must be run on Linux" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if something is running on port 80
|
||||||
|
# if ss -tulnp | grep ':80 ' >/dev/null; then
|
||||||
|
# echo "Error: something is already running on port 80" >&2
|
||||||
|
# exit 1
|
||||||
|
# fi
|
||||||
|
|
||||||
|
command_exists() {
|
||||||
|
command -v "$@" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
if command_exists docker; then
|
||||||
|
echo "Docker already installed"
|
||||||
|
else
|
||||||
|
curl -sSL https://get.docker.com | sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker swarm leave --force 2>/dev/null
|
||||||
|
|
||||||
|
get_ip() {
|
||||||
|
local ip=""
|
||||||
|
|
||||||
|
# Try IPv4 first
|
||||||
|
# First attempt: ifconfig.io
|
||||||
|
ip=$(curl -4s --connect-timeout 5 https://ifconfig.io 2>/dev/null)
|
||||||
|
|
||||||
|
# Second attempt: icanhazip.com
|
||||||
|
if [ -z "$ip" ]; then
|
||||||
|
ip=$(curl -4s --connect-timeout 5 https://icanhazip.com 2>/dev/null)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Third attempt: ipecho.net
|
||||||
|
if [ -z "$ip" ]; then
|
||||||
|
ip=$(curl -4s --connect-timeout 5 https://ipecho.net/plain 2>/dev/null)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If no IPv4, try IPv6
|
||||||
|
if [ -z "$ip" ]; then
|
||||||
|
# Try IPv6 with ifconfig.io
|
||||||
|
ip=$(curl -6s --connect-timeout 5 https://ifconfig.io 2>/dev/null)
|
||||||
|
|
||||||
|
# Try IPv6 with icanhazip.com
|
||||||
|
if [ -z "$ip" ]; then
|
||||||
|
ip=$(curl -6s --connect-timeout 5 https://icanhazip.com 2>/dev/null)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Try IPv6 with ipecho.net
|
||||||
|
if [ -z "$ip" ]; then
|
||||||
|
ip=$(curl -6s --connect-timeout 5 https://ipecho.net/plain 2>/dev/null)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$ip" ]; then
|
||||||
|
echo "Error: Could not determine server IP address automatically (neither IPv4 nor IPv6)." >&2
|
||||||
|
echo "Please set the ADVERTISE_ADDR environment variable manually." >&2
|
||||||
|
echo "Example: export ADVERTISE_ADDR=<your-server-ip>" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$ip"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_private_ip() {
|
||||||
|
ip addr show | grep -E "inet (192\.168\.|10\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[0-1]\.)" | head -n1 | awk '{print $2}' | cut -d/ -f1
|
||||||
|
}
|
||||||
|
|
||||||
|
advertise_addr="${ADVERTISE_ADDR:-$(get_private_ip)}"
|
||||||
|
|
||||||
|
if [ -z "$advertise_addr" ]; then
|
||||||
|
echo "ERROR: We couldn't find a private IP address."
|
||||||
|
echo "Please set the ADVERTISE_ADDR environment variable manually."
|
||||||
|
echo "Example: export ADVERTISE_ADDR=192.168.1.100"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Using advertise address: $advertise_addr"
|
||||||
|
|
||||||
|
docker swarm init --advertise-addr $advertise_addr
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to initialize Docker Swarm" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Swarm initialized"
|
||||||
|
|
||||||
|
docker network rm -f dokploy-network 2>/dev/null
|
||||||
|
docker network create --driver overlay --attachable dokploy-network
|
||||||
|
|
||||||
|
echo "Network created"
|
||||||
|
|
||||||
|
mkdir -p /etc/dokploy
|
||||||
|
|
||||||
|
chmod 777 /etc/dokploy
|
||||||
|
|
||||||
|
docker service create \
|
||||||
|
--name dokploy-postgres \
|
||||||
|
--constraint 'node.role==manager' \
|
||||||
|
--network dokploy-network \
|
||||||
|
--env POSTGRES_USER=dokploy \
|
||||||
|
--env POSTGRES_DB=dokploy \
|
||||||
|
--env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \
|
||||||
|
--mount type=volume,source=dokploy-postgres-database,target=/var/lib/postgresql/data \
|
||||||
|
postgres:16
|
||||||
|
|
||||||
|
docker service create \
|
||||||
|
--name dokploy-redis \
|
||||||
|
--constraint 'node.role==manager' \
|
||||||
|
--network dokploy-network \
|
||||||
|
--mount type=volume,source=redis-data-volume,target=/data \
|
||||||
|
redis:7
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
docker service create \
|
||||||
|
--name dokploy \
|
||||||
|
--replicas 1 \
|
||||||
|
--network dokploy-network \
|
||||||
|
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
|
||||||
|
--mount type=bind,source=/etc/dokploy,target=/etc/dokploy \
|
||||||
|
--mount type=volume,source=dokploy-docker-config,target=/root/.docker \
|
||||||
|
--publish published=3000,target=3000,mode=host \
|
||||||
|
--update-parallelism 1 \
|
||||||
|
--update-order stop-first \
|
||||||
|
--constraint 'node.role == manager' \
|
||||||
|
-e ADVERTISE_ADDR=$advertise_addr \
|
||||||
|
dokploy/dokploy:latest
|
||||||
|
|
||||||
|
sleep 4
|
||||||
|
|
||||||
|
# Optional: Use docker service create instead of docker run
|
||||||
|
# docker service create \
|
||||||
|
# --name dokploy-traefik \
|
||||||
|
# --constraint 'node.role==manager' \
|
||||||
|
# --network dokploy-network \
|
||||||
|
# --mount type=bind,source=/etc/dokploy/traefik/traefik.yml,target=/etc/traefik/traefik.yml \
|
||||||
|
# --mount type=bind,source=/etc/dokploy/traefik/dynamic,target=/etc/dokploy/traefik/dynamic \
|
||||||
|
# --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
|
||||||
|
# --publish mode=host,published=443,target=443 \
|
||||||
|
# --publish mode=host,published=80,target=80 \
|
||||||
|
# --publish mode=host,published=443,target=443,protocol=udp \
|
||||||
|
# traefik:v3.1.2
|
||||||
|
|
||||||
|
GREEN="\033[0;32m"
|
||||||
|
YELLOW="\033[1;33m"
|
||||||
|
BLUE="\033[0;34m"
|
||||||
|
NC="\033[0m" # No Color
|
||||||
|
|
||||||
|
format_ip_for_url() {
|
||||||
|
local ip="$1"
|
||||||
|
if echo "$ip" | grep -q ':'; then
|
||||||
|
# IPv6
|
||||||
|
echo "[${ip}]"
|
||||||
|
else
|
||||||
|
# IPv4
|
||||||
|
echo "${ip}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
public_ip="${ADVERTISE_ADDR:-$(get_ip)}"
|
||||||
|
formatted_addr=$(format_ip_for_url "$public_ip")
|
||||||
|
echo ""
|
||||||
|
printf "${GREEN}Congratulations, Dokploy is installed!${NC}\n"
|
||||||
|
printf "${BLUE}Wait 15 seconds for the server to start${NC}\n"
|
||||||
|
printf "${YELLOW}Please go to http://${formatted_addr}:3000${NC}\n\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_dokploy() {
|
||||||
|
echo "Updating Dokploy..."
|
||||||
|
|
||||||
|
# Pull the latest image
|
||||||
|
docker pull dokploy/dokploy:latest
|
||||||
|
|
||||||
|
# Update the service
|
||||||
|
docker service update --image dokploy/dokploy:latest dokploy
|
||||||
|
|
||||||
|
echo "Dokploy has been updated to the latest version."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main script execution
|
||||||
|
if [ "$1" = "update" ]; then
|
||||||
|
update_dokploy
|
||||||
|
else
|
||||||
|
install_dokploy
|
||||||
|
fi
|
||||||
21
filebrowser/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
services:
|
||||||
|
filebrowser:
|
||||||
|
image: filebrowser/filebrowser
|
||||||
|
container_name: filebrowser
|
||||||
|
user: "1000:1000"
|
||||||
|
ports:
|
||||||
|
- 8080:80
|
||||||
|
command: ["--port", "80", "--database", "/database/filebrowser.db", "--address", "0.0.0.0"]
|
||||||
|
volumes:
|
||||||
|
- samba_data:/samba
|
||||||
|
- filebrowser_db:/database
|
||||||
|
- filebrowser_settings:/config/settings.json
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
samba_data:
|
||||||
|
external: True
|
||||||
|
filebrowser_db:
|
||||||
|
filebrowser_settings:
|
||||||
|
external: True
|
||||||
|
name: filebrowser_filebrowser_settings
|
||||||
BIN
glance/assets/filebrowser.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
40
glance/assets/forgejo.svg
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
<svg viewBox="0 0 212 212" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<metadata
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
>
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work rdf:about="https://codeberg.org/forgejo/meta/src/branch/readme/branding#logo">
|
||||||
|
<dc:title>Forgejo logo</dc:title>
|
||||||
|
<cc:creator rdf:resource="https://caesarschinas.com/"><cc:attributionName>Caesar Schinas</cc:attributionName></cc:creator>
|
||||||
|
<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<style type="text/css">
|
||||||
|
circle {
|
||||||
|
fill: none;
|
||||||
|
stroke: #000;
|
||||||
|
stroke-width: 15;
|
||||||
|
}
|
||||||
|
path {
|
||||||
|
fill: none;
|
||||||
|
stroke: #000;
|
||||||
|
stroke-width: 25;
|
||||||
|
}
|
||||||
|
.orange {
|
||||||
|
stroke:#ff6600;
|
||||||
|
}
|
||||||
|
.red {
|
||||||
|
stroke:#d40000;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<g transform="translate(6,6)">
|
||||||
|
<path d="M58 168 v-98 a50 50 0 0 1 50-50 h20" class="orange" />
|
||||||
|
<path d="M58 168 v-30 a50 50 0 0 1 50-50 h20" class="red" />
|
||||||
|
<circle cx="142" cy="20" r="18" class="orange" />
|
||||||
|
<circle cx="142" cy="88" r="18" class="red" />
|
||||||
|
<circle cx="58" cy="180" r="18" class="red" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
BIN
glance/assets/immich.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
24
glance/assets/jellyfin.svg
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- ***** BEGIN LICENSE BLOCK *****
|
||||||
|
- Part of the Jellyfin project (https://jellyfin.media)
|
||||||
|
-
|
||||||
|
- All copyright belongs to the Jellyfin contributors; a full list can
|
||||||
|
- be found in the file CONTRIBUTORS.md
|
||||||
|
-
|
||||||
|
- This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||||
|
- To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/.
|
||||||
|
- ***** END LICENSE BLOCK ***** -->
|
||||||
|
<svg version="1.1" id="icon-transparent" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="linear-gradient" gradientUnits="userSpaceOnUse" x1="110.25" y1="213.3" x2="496.14" y2="436.09">
|
||||||
|
<stop offset="0" style="stop-color:#AA5CC3"/>
|
||||||
|
<stop offset="1" style="stop-color:#00A4DC"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<title>icon-transparent</title>
|
||||||
|
<g id="icon-transparent">
|
||||||
|
<path id="inner-shape" d="M256,201.6c-20.4,0-86.2,119.3-76.2,139.4s142.5,19.9,152.4,0S276.5,201.6,256,201.6z" fill="url(#linear-gradient)"/>
|
||||||
|
<path id="outer-shape" d="M256,23.3c-61.6,0-259.8,359.4-229.6,420.1s429.3,60,459.2,0S317.6,23.3,256,23.3z
|
||||||
|
M406.5,390.8c-19.6,39.3-281.1,39.8-300.9,0s110.1-275.3,150.4-275.3S426.1,351.4,406.5,390.8z" fill="url(#linear-gradient)"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
118
glance/assets/jellyseerr.svg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
glance/assets/mealie.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
glance/assets/portainer.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
1
glance/assets/user.css
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
20
glance/config/glance.yml
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
server:
|
||||||
|
assets-path: /app/assets
|
||||||
|
|
||||||
|
theme:
|
||||||
|
light: true
|
||||||
|
background-color: 0 0 95
|
||||||
|
primary-color: 0 0 10
|
||||||
|
negative-color: 0 90 50
|
||||||
|
custom-css-file: /assets/user.css
|
||||||
|
|
||||||
|
pages:
|
||||||
|
# It's not necessary to create a new file for each page and include it, you can simply
|
||||||
|
# put its contents here, though multiple pages are easier to manage when separated
|
||||||
|
- $include: home.yml
|
||||||
|
|
||||||
|
auth:
|
||||||
|
secret-key: yffGo2FyXMSBqkp/joG30AUCwnP+eF16P3Y0A3+0Jp22P+BjQ0/B+rQzLI+hXqQKPAVYdHdF4TBJ0gWZ6jirRw== # this must be set to a random value generated using the secret:make CLI command
|
||||||
|
users:
|
||||||
|
admin:
|
||||||
|
password: HgU0P9dEvjQ%nXw0ZMFz
|
||||||
244
glance/config/home.yml
Normal file
|
|
@ -0,0 +1,244 @@
|
||||||
|
- name: Home
|
||||||
|
# Optionally, if you only have a single page you can hide the desktop navigation for a cleaner look
|
||||||
|
# hide-desktop-navigation: true
|
||||||
|
columns:
|
||||||
|
- size: small
|
||||||
|
widgets:
|
||||||
|
- type: bookmarks
|
||||||
|
groups:
|
||||||
|
- links:
|
||||||
|
- title: Youtube
|
||||||
|
url: https://www.youtube.com/
|
||||||
|
- title: Github
|
||||||
|
url: https://github.com
|
||||||
|
- title: Monkeytype
|
||||||
|
url: https://monkeytype.com/
|
||||||
|
- title: Awesome Homelab
|
||||||
|
url: https://www.awesome-homelab.com/
|
||||||
|
- title: Homelab
|
||||||
|
color: 100 100 50
|
||||||
|
links:
|
||||||
|
- title: Portainer
|
||||||
|
url: https://192.168.12.151:9443/#!/home
|
||||||
|
- title: AdGuard DNS
|
||||||
|
url: http://192.168.12.151/
|
||||||
|
- title: Filebrowser
|
||||||
|
url: https://drive.theocloud.dev/
|
||||||
|
- title: Immich
|
||||||
|
url: https://immich.theocloud.dev/
|
||||||
|
- title: Git
|
||||||
|
url: https://git.theocloud.dev/
|
||||||
|
- title: Open WebUI
|
||||||
|
url: https://chat.theocloud.dev/
|
||||||
|
- title: n8n
|
||||||
|
url: https://n8n.theocloud.dev/
|
||||||
|
- title: Mealie
|
||||||
|
url: https://mealie.theocloud.dev/
|
||||||
|
- title: Uptime Kuma
|
||||||
|
url: https://uptime.theocloud.dev/
|
||||||
|
- title: Overleaf
|
||||||
|
url: https://overleaf.theocloud.dev/project/
|
||||||
|
- title: Media Automation
|
||||||
|
color: 200 50 50
|
||||||
|
links:
|
||||||
|
- title: Jellyfin
|
||||||
|
url: https://jellyfin.theocloud.dev/
|
||||||
|
- title: Jellyseerr
|
||||||
|
url: https://jellyseerr.theocloud.dev/
|
||||||
|
- title: HWR
|
||||||
|
color: 10 70 50
|
||||||
|
links:
|
||||||
|
- title: WebMail
|
||||||
|
url: https://webmail.stud.hwr-berlin.de/appsuite/
|
||||||
|
- title: SAM
|
||||||
|
url: https://sam.hwr-berlin.de/de/
|
||||||
|
- title: Moodle
|
||||||
|
url: https://moodle.hwr-berlin.de/
|
||||||
|
- title: Studenplan
|
||||||
|
url: https://moodle.hwr-berlin.de/fb2-stundenplan/stundenplan.php
|
||||||
|
|
||||||
|
- type: to-do
|
||||||
|
|
||||||
|
- size: full
|
||||||
|
widgets:
|
||||||
|
- type: split-column
|
||||||
|
widgets:
|
||||||
|
- type: weather
|
||||||
|
location: Berlin, Germany
|
||||||
|
units: metric # alternatively "imperial"
|
||||||
|
hour-format: 24h # alternatively "24h"
|
||||||
|
# Optionally hide the location from being displayed in the widget
|
||||||
|
# hide-location: true
|
||||||
|
|
||||||
|
- type: dns-stats
|
||||||
|
collapse-after: 3
|
||||||
|
service: adguard
|
||||||
|
url: http://192.168.12.151/
|
||||||
|
username: theo
|
||||||
|
password: 58201928alsk
|
||||||
|
|
||||||
|
- type: rss
|
||||||
|
title: News
|
||||||
|
style: horizontal-cards
|
||||||
|
feeds:
|
||||||
|
- url: https://www.tagesschau.de/infoservices/alle-meldungen-100~rss2.xml
|
||||||
|
title: Tagesschau
|
||||||
|
- url: https://www.bundesregierung.de/service/rss/breg-de/1151242/feed.xml
|
||||||
|
title: Bundesregierung
|
||||||
|
- url: https://www.bmi.bund.de/DE/service/rss-newsfeed/function/rssnewsfeed-neue-inhalte.xml
|
||||||
|
title: BMI Neue Inhalte
|
||||||
|
- url: https://www.bmi.bund.de/DE/service/rss-newsfeed/function/rssnewsfeed-pressemitteilungen.xml
|
||||||
|
title: BMI Pressemitteilungen
|
||||||
|
- url: https://www.bmi.bund.de/DE/service/rss-newsfeed/function/rssnewsfeed-kurzmeldungen.xml
|
||||||
|
title: BMI Kurzmeldungen
|
||||||
|
- url: https://feeds.bbci.co.uk/news/rss.xml
|
||||||
|
title: BBC
|
||||||
|
|
||||||
|
- type: rss
|
||||||
|
title: Tech
|
||||||
|
style: detailed-list
|
||||||
|
feeds:
|
||||||
|
- url: https://www.wired.com/feed/rss
|
||||||
|
title: WIRED
|
||||||
|
- url: https://thedecisionlab.com/feed/
|
||||||
|
title: The Decision Lab
|
||||||
|
- url: https://nesslabs.com/feed/
|
||||||
|
title: Ness Labs
|
||||||
|
- url: http://www.fastcodesign.com/rss.xml
|
||||||
|
title: FastCo Design
|
||||||
|
- url: https://medium.com/feed/medium-eng/
|
||||||
|
title: Medium Engineering
|
||||||
|
- url: https://developer.atlassian.com/blog/feed.xml
|
||||||
|
title: Atlassian Developer Blog
|
||||||
|
- url: https://stripe.com/blog/feed.rss
|
||||||
|
title: Stripe Blog
|
||||||
|
- url: https://blog.cloudflare.com/rss/
|
||||||
|
title: Cloudflare Blog
|
||||||
|
- url: https://deepmind.com/blog/feed/basic/
|
||||||
|
title: DeepMind Blog
|
||||||
|
- url: http://news.mit.edu/rss/topic/artificial-intelligence2
|
||||||
|
title: MIT AI News
|
||||||
|
- url: https://blog.openai.com/rss/
|
||||||
|
title: OpenAI Blog
|
||||||
|
- url: https://uxplanet.org/feed
|
||||||
|
title: UX Planet
|
||||||
|
- url: http://feeds.feedburner.com/uxmovement
|
||||||
|
title: UX Movement
|
||||||
|
|
||||||
|
- size: small
|
||||||
|
widgets:
|
||||||
|
- type: monitor
|
||||||
|
cache: 1m
|
||||||
|
title: Services
|
||||||
|
sites:
|
||||||
|
- title: Jellyfin
|
||||||
|
url: https://jellyfin.theocloud.dev
|
||||||
|
icon: /assets/jellyfin.svg
|
||||||
|
- title: Jellyseerr
|
||||||
|
url: https://jellyseerr.theocloud.dev/
|
||||||
|
icon: /assets/jellyseerr.svg
|
||||||
|
- title: Forgejo Git
|
||||||
|
url: https://git.theocloud.dev
|
||||||
|
icon: /assets/forgejo.svg
|
||||||
|
- title: Immich
|
||||||
|
url: https://immich.theocloud.dev
|
||||||
|
icon: /assets/immich.png
|
||||||
|
- title: Filebrowser
|
||||||
|
url: https://drive.theocloud.dev
|
||||||
|
icon: /assets/filebrowser.png
|
||||||
|
- title: Mealie
|
||||||
|
url: https://mealie.theocloud.dev
|
||||||
|
icon: /assets/mealie.png
|
||||||
|
|
||||||
|
- type: markets
|
||||||
|
markets:
|
||||||
|
- symbol: SPY
|
||||||
|
name: S&P 500
|
||||||
|
- symbol: BTC-USD
|
||||||
|
name: Bitcoin
|
||||||
|
- symbol: NVDA
|
||||||
|
name: NVIDIA
|
||||||
|
- symbol: AAPL
|
||||||
|
name: Apple
|
||||||
|
- symbol: MSFT
|
||||||
|
name: Microsoft
|
||||||
|
- symbol: URTH
|
||||||
|
name: MSCI World (URTH)
|
||||||
|
- symbol: NFLX
|
||||||
|
name: Netflix
|
||||||
|
- symbol: QQQ
|
||||||
|
name: Nasdaq 100 ETF
|
||||||
|
- symbol: VTI
|
||||||
|
name: Vanguard Total Stock Market ETF
|
||||||
|
- symbol: IEMG
|
||||||
|
name: Emerging Markets ETF
|
||||||
|
- symbol: ARKK
|
||||||
|
name: ARK Innovation ETF
|
||||||
|
- symbol: META
|
||||||
|
name: Meta (Facebook)
|
||||||
|
- symbol: AMZN
|
||||||
|
name: Amazon
|
||||||
|
- symbol: TSLA
|
||||||
|
name: Tesla
|
||||||
|
|
||||||
|
|
||||||
|
- name: Entertainment
|
||||||
|
columns:
|
||||||
|
- size: small
|
||||||
|
widgets:
|
||||||
|
- type: twitch-channels
|
||||||
|
channels:
|
||||||
|
- HandOfBlood
|
||||||
|
- maxim
|
||||||
|
- sascha
|
||||||
|
- fritz_meinecke
|
||||||
|
- RPICloud
|
||||||
|
- Roffle
|
||||||
|
- Jodarum
|
||||||
|
- iii_Initiative
|
||||||
|
- RealCivilEngineer
|
||||||
|
|
||||||
|
- type: twitch-top-games
|
||||||
|
exclude:
|
||||||
|
- just-chatting
|
||||||
|
- pools-hot-tubs-and-beaches
|
||||||
|
- music
|
||||||
|
- art
|
||||||
|
- asmr
|
||||||
|
- counter-strike
|
||||||
|
- league-of-legends
|
||||||
|
- valorant
|
||||||
|
- dota-2
|
||||||
|
|
||||||
|
- size: full
|
||||||
|
widgets:
|
||||||
|
- type: videos
|
||||||
|
style: grid-cards
|
||||||
|
channels:
|
||||||
|
- UC5iYuXSliCgk_mtUJa25eoQ # MATTIN
|
||||||
|
- UCeosQoJubf3KzYRtjBNGoag # Nicky Lyan
|
||||||
|
- UC6biysICWOJ-C3P4Tyeggzg # LowLevel
|
||||||
|
- UCcpIdXCr3MjAQEWSEjpGUNg # Joelemz
|
||||||
|
- UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling
|
||||||
|
- UCsBjURrPoezykLs9EqgamOA # Fireship
|
||||||
|
- UCGRb1WmL-v6AxZRLbcdXD_Q # Fritz Meinecke Live
|
||||||
|
- UCzH549YlZhdhIqhtvz7XHmQ # AlexiBexi
|
||||||
|
- UC9YTp5M6yYgSd6t0SeL2GQw # HandofBlood
|
||||||
|
- UCCJ-NJtqLQRxuaxHZA9q6zg # HandofUncut
|
||||||
|
- UCiHTnZis5R1bmrqQcYd7zWw # Sacha Hellinger
|
||||||
|
- UCXDi1F7Q-cJQ4mGGavtfYRQ # Inscope21
|
||||||
|
- UC-4Tzd5lIRU7lcv7_5OO01Q # UnsymphatischTV
|
||||||
|
- UC6C1dyHHOMVIBAze8dWfqCw # Gamestar
|
||||||
|
- UCyQAraT4FYcXgnUTLOj796Q # Survival Mattin
|
||||||
|
- UCZXW8E1__d5tZb-wLFOt8TQ # Bog
|
||||||
|
- UCFgBYlz5LwymPSWBX-G6hBA # 2 Bored Guys
|
||||||
|
- UCOuGATIAbd2DvzJmUgXn2IQ # Network Chuck 2
|
||||||
|
- UC9x0AN7BWHpCDHSm9NiJFJQ # Network Chuck
|
||||||
|
- UCgHGPOxUMfWsiy1ZyR-tLVw # Livakiva
|
||||||
|
- UCI7kKmUuSQOHUvSWIYFDf1Q # Eliminate
|
||||||
|
- UCHj7VElFb0_sxhI5KHduM7A # HardwareDealz
|
||||||
|
- UCREHHX2Lk_BYGS9R0ia7DDQ # Rantoni
|
||||||
|
- UC8butISFwT-Wl7EV0hUK0BQ # FreeCodeCamp
|
||||||
|
- UC4JX40jDee_tINbkjycV4Sg # Tech With Tim
|
||||||
|
- UCOk-gHyjcWZNj3Br4oxwh0A # Techno Tim
|
||||||
|
- UC_76XFUys5fTO7u_HqrD7aA # RPI Cloud
|
||||||
20
glance/docker-compose.yml
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
services:
|
||||||
|
glance:
|
||||||
|
container_name: glance
|
||||||
|
image: glanceapp/glance
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- glance_config:/app/config
|
||||||
|
- glance_assets:/app/assets
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
ports:
|
||||||
|
- 8383:8080
|
||||||
|
env_file: .env
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
glance_config:
|
||||||
|
external: True
|
||||||
|
glance_assets:
|
||||||
|
external: True
|
||||||
19
kavita/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
services:
|
||||||
|
kavita:
|
||||||
|
image: lscr.io/linuxserver/kavita:latest
|
||||||
|
container_name: kavita
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Etc/UTC
|
||||||
|
volumes:
|
||||||
|
- kavita_config:/config
|
||||||
|
- ebooks_library:/data
|
||||||
|
ports:
|
||||||
|
- 5000:5000
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
kavita_config:
|
||||||
|
ebooks_library:
|
||||||
|
external: True
|
||||||
14
n8n-automation/.env
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
# n8n Settings
|
||||||
|
DOMAIN_NAME=theocloud.dev
|
||||||
|
SUBDOMAIN=n8n
|
||||||
|
GENERIC_TIMEZONE=Europe/Berlin
|
||||||
|
N8N_HOST=n8n.theocloud.dev
|
||||||
|
N8N_PROTOCOL=https
|
||||||
|
WEBHOOK_URL=https://n8n.theocloud.dev/
|
||||||
|
N8N_SECURE_COOKIE=false
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
# PostgreSQL
|
||||||
|
POSTGRES_DB=n8n
|
||||||
|
POSTGRES_USER=n8n
|
||||||
|
POSTGRES_PASSWORD=58201928alsk
|
||||||
25
n8n-automation/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
services:
|
||||||
|
n8n:
|
||||||
|
image: n8nio/n8n:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "5678:5678"
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
volumes:
|
||||||
|
- n8n_data:/home/node/.n8n
|
||||||
|
- n8n_files:/files
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
postgres:
|
||||||
|
image: postgres:15
|
||||||
|
restart: always
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
volumes:
|
||||||
|
- n8n_postgres_data:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
n8n_data:
|
||||||
|
n8n_files:
|
||||||
|
n8n_postgres_data:
|
||||||
22
pocketbase/Dockerfile
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
ARG PB_VERSION=0.28.4
|
||||||
|
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
unzip \
|
||||||
|
ca-certificates
|
||||||
|
|
||||||
|
# download and unzip PocketBase
|
||||||
|
ADD https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_amd64.zip /tmp/pb.zip
|
||||||
|
RUN unzip /tmp/pb.zip -d /pb/
|
||||||
|
|
||||||
|
# uncomment to copy the local pb_migrations dir into the image
|
||||||
|
# COPY ./pb_migrations /pb/pb_migrations
|
||||||
|
|
||||||
|
# uncomment to copy the local pb_hooks dir into the image
|
||||||
|
# COPY ./pb_hooks /pb/pb_hooks
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
# start PocketBase
|
||||||
|
CMD ["/pb/pocketbase", "serve", "--http=0.0.0.0:8080"]
|
||||||
16
pocketbase/docker-compose.yml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
services:
|
||||||
|
pocketbase:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
args:
|
||||||
|
PB_VERSION: 0.28.4
|
||||||
|
container_name: pocketbase
|
||||||
|
volumes:
|
||||||
|
- pb_data:/pb/pb_data
|
||||||
|
ports:
|
||||||
|
- "8090:8080"
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pb_data:
|
||||||
14
privatebin/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
services:
|
||||||
|
privatebin:
|
||||||
|
image: privatebin/nginx-fpm-alpine
|
||||||
|
container_name: privatebin
|
||||||
|
restart: always
|
||||||
|
read_only: true
|
||||||
|
user: "1000:1000" # Run the container with the UID:GID of your Docker user
|
||||||
|
ports:
|
||||||
|
- "8888:8080"
|
||||||
|
volumes:
|
||||||
|
- data:/srv/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data:
|
||||||
|
|
@ -1,11 +1,8 @@
|
||||||
services:
|
services:
|
||||||
satisfactory-server:
|
satisfactory-server:
|
||||||
container_name: 'satisfactory-server'
|
container_name: 'satisfactory-server'
|
||||||
hostname: 'drachenschanze-reloaded'
|
|
||||||
image: 'wolveix/satisfactory-server:latest'
|
image: 'wolveix/satisfactory-server:latest'
|
||||||
ports:
|
network_mode: 'service:tailscale'
|
||||||
- '7777:7777/udp'
|
|
||||||
- '7777:7777/tcp'
|
|
||||||
volumes:
|
volumes:
|
||||||
- satisfactory_config:/config
|
- satisfactory_config:/config
|
||||||
environment:
|
environment:
|
||||||
|
|
@ -21,6 +18,25 @@ services:
|
||||||
reservations:
|
reservations:
|
||||||
memory: 8G
|
memory: 8G
|
||||||
|
|
||||||
|
tailscale:
|
||||||
|
image: tailscale/tailscale:stable
|
||||||
|
container_name: satisfactory-tailscaled
|
||||||
|
ports:
|
||||||
|
- '7777:7777/udp'
|
||||||
|
- '7777:7777/tcp'
|
||||||
|
- '8888:8888/udp'
|
||||||
|
- '8888:8888/tcp'
|
||||||
volumes:
|
volumes:
|
||||||
|
- tailscale_data:/var/lib
|
||||||
|
- /dev/net/tun:/dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
- NET_RAW
|
||||||
|
environment:
|
||||||
|
- TS_AUTHKEY=tskey-auth-kCkP76DtH121CNTRL-umazeDHVETVzu1JBrFyeSVazWSYBrx476
|
||||||
|
- TS_HOSTNAME=Satisfactory-Server
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
tailscale_data:
|
||||||
satisfactory_config:
|
satisfactory_config:
|
||||||
external: true
|
external: true
|
||||||
22
stirling-pdf/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
services:
|
||||||
|
stirling-pdf:
|
||||||
|
container_name: stirling-pdf
|
||||||
|
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
|
||||||
|
ports:
|
||||||
|
- 8184:8080
|
||||||
|
volumes:
|
||||||
|
- stirlingpdf_trainingData:/usr/share/tessdata # Required for extra OCR languages
|
||||||
|
- stirlingpdf_extraConfigs:/configs
|
||||||
|
- stirlingpdf_customFiles:/customFiles/
|
||||||
|
- stirlingpdf_logs:/logs/
|
||||||
|
- stirlingpdf_pipeline:/pipeline/
|
||||||
|
environment:
|
||||||
|
- DISABLE_ADDITIONAL_FEATURES=false
|
||||||
|
- LANGS=en_GB
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
stirlingpdf_trainingData:
|
||||||
|
stirlingpdf_extraConfigs:
|
||||||
|
stirlingpdf_customFiles:
|
||||||
|
stirlingpdf_logs:
|
||||||
|
stirlingpdf_pipeline:
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
services:
|
|
||||||
tailscale:
|
|
||||||
image: tailscale/tailscale:stable
|
|
||||||
container_name: tailscaled
|
|
||||||
volumes:
|
|
||||||
- tailscale_tailscale_data:/var/lib
|
|
||||||
- /dev/net/tun:/dev/net/tun
|
|
||||||
network_mode: host
|
|
||||||
cap_add:
|
|
||||||
- NET_ADMIN
|
|
||||||
- NET_RAW
|
|
||||||
environment:
|
|
||||||
- TS_AUTHKEY=tskey-auth-kzcw7n21Rm11CNTRL-xscFvvmtfzFyzLi3QnQF1GJcKDhknoMP
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
tailscale_tailscale_data:
|
|
||||||
external: True
|
|
||||||
2
webdav/.env
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
WEBDAV_USER=theo
|
||||||
|
WEBDAV_PASSWORD=58201928alsk
|
||||||
16
webdav/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
services:
|
||||||
|
webdav:
|
||||||
|
image: bytemark/webdav
|
||||||
|
container_name: webdav
|
||||||
|
environment:
|
||||||
|
- AUTH_TYPE=Basic
|
||||||
|
- USERNAME=${WEBDAV_USER}
|
||||||
|
- PASSWORD=${WEBDAV_PASSWORD}
|
||||||
|
volumes:
|
||||||
|
- samba_data:/var/lib/dav
|
||||||
|
ports:
|
||||||
|
- 8081:80
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
samba_data:
|
||||||
|
external: True
|
||||||