938 Commits
Author SHA1 Message Date
marc 465f4dc20c celery beat healthcheck 2025-02-09 16:16:40 +01:00
marc 2b4a5eb039 traefik with docker 2025-02-09 15:48:56 +01:00
marc 7face30f0b sablier docker 2025-02-09 15:48:40 +01:00
marc d72912481e nextcloud healthcheck 2025-02-09 15:48:23 +01:00
marc 0d42eb1e33 resume sablier 2025-02-09 15:48:08 +01:00
marc cf2fc1156c sablier 2025-02-09 15:47:45 +01:00
marc 3709c4b8de docker not podman this time 2025-02-09 15:47:30 +01:00
marc 2e34a68d89 ebook2audiobookxtts.yml consumes a lot 2025-02-09 15:47:02 +01:00
marc 31d60f6f3b web terminal 2025-02-09 15:46:49 +01:00
marc 8eead75ef9 audiobookshelf.yml that works 2025-02-09 15:46:17 +01:00
marc 9b2dbfa6e0 cloudflare healthcheck 2025-02-09 15:46:08 +01:00
marc b10768fcb5 minio healthcheck 2025-02-09 15:45:59 +01:00
marc b53a6a9a4d healthcheck nextcloud 2025-01-10 16:14:08 +01:00
marc 15c2e6c62b fixed everything 2025-01-06 09:03:55 +00:00
marc 768bced602 alpine second commit 2025-01-06 08:56:48 +00:00
marc 4394df2555 alpine first commit 2025-01-06 08:56:25 +00:00
marc 03089ea092 web terminal ldap protection 2024-12-26 16:52:24 +01:00
marc 88852be213 new port 2024-12-26 00:22:04 +01:00
marc 1013c6a62b fix jellyfin for cloudflare tunnel 2024-12-26 00:21:35 +01:00
marc 10f8b4bbd7 website port 80 2024-11-25 07:55:30 +01:00
marc bbe8e2fd3d alpine virt desktop 2024-10-17 14:26:14 +02:00
marc c692f9b548 wger fix 2024-10-17 14:26:01 +02:00
marc 96e3683cda thai wara 2024-10-17 14:25:53 +02:00
marc 018377f66f resume is not dynamic 2024-10-07 00:11:42 +02:00
marc d70e0a93bf fix nextcloud 2024-10-07 00:11:11 +02:00
marc cc21806b3c udemy 2024-10-07 00:10:52 +02:00
marc f60f92ae9b postgres netowrk 2024-09-16 16:53:22 +02:00
marc 140c355e9d latest for github action 2024-09-14 19:21:25 +02:00
marc 607abc3f41 izitdone stripprefix middlware that works 2024-09-13 07:24:01 +02:00
marc 7a25b78fd9 discord image that works with uv 2024-09-09 02:01:48 +02:00
marc 8fdf857e6b update discord bot for uv 2024-09-09 01:01:08 +02:00
marc 48e0230263 makefile 2024-09-09 00:59:34 +02:00
marc 6c987f0c29 podman-compose too 2024-09-09 00:59:15 +02:00
marc 5b6a4ec2a3 no swarm 2024-09-09 00:58:47 +02:00
marc 535391775b izitdone 2024-09-09 00:58:05 +02:00
marc 3a50c0002d docker.io registry 2024-09-09 00:57:47 +02:00
marc 80f6c66dc0 matrix that works with lots of bridges 2024-06-13 17:15:27 +02:00
marc 6c8e984dcf autodownloader that works 2024-06-13 17:13:36 +02:00
marc 36cca0973e wstunnel fix 2024-06-05 02:48:40 +02:00
marc 9d674da903 website forbids wellknown pathprefix 2024-06-05 02:48:33 +02:00
marc 8734f5a299 matrix with all bridges 2024-06-05 02:48:10 +02:00
marc 818d78e1c6 matrix server with rust but doesnt support postgres even though it supports ldpa 2024-06-04 17:00:32 +02:00
marc ea1ab77107 traefik clean 2024-06-04 16:03:28 +02:00
marc f21e08684c dont push nextcloud config nor grafana 2024-06-04 15:22:03 +02:00
marc 2a2b778984 lms test 2024-06-04 14:16:59 +02:00
marc f555fbc60e nextcloud 2024-06-04 14:16:52 +02:00
marc 56286c7460 wg-easy 2024-06-04 06:53:34 +02:00
marc f866c4e473 wstunnel that works 2024-06-04 06:52:57 +02:00
marc 8445d6cb45 traefik back compatibable v3 2024-06-04 06:52:50 +02:00
marc 5ce592dd7b postgres.yml 2024-06-04 02:25:26 +02:00
marc d552c1d4c9 filebrowser 2024-06-04 01:56:23 +02:00
marc bbeed12ed6 dockge 2024-06-04 01:56:17 +02:00
marc 82188f7c01 ignore all data folders 2024-06-04 01:56:07 +02:00
marc 4eea2090b6 ignore 2024-06-04 01:53:50 +02:00
marc 5d8c6f90f0 webdav that doesnt work 2024-06-04 01:53:06 +02:00
marc 79e125e51f clearer 2024-06-04 01:51:52 +02:00
marc 8842d41d17 cleaner 2024-06-04 01:50:14 +02:00
marc 0d6835bf52 precision 2024-06-04 01:49:51 +02:00
marc 89b4ffbfaa readme visit my cloud 2024-06-04 01:47:52 +02:00
marc c6061d56e8 fix link mistake 2024-06-04 01:43:40 +02:00
marc df610f4bbd README.md update with heimdall and new links 2024-06-04 01:42:19 +02:00
marc d06f447c3c filebrowser 2024-06-04 01:11:21 +02:00
marc 5e9da76301 fix 2024-06-04 00:48:42 +02:00
marc c29422b723 applfooy data folder 2024-06-04 00:47:13 +02:00
marc ba589d9335 mistral that doesnt work and thats useless 2024-06-04 00:45:59 +02:00
marc 27bfba09d7 adguard conf update 2024-06-04 00:43:57 +02:00
marc 1d95c894ae adguard that works 2024-06-04 00:43:15 +02:00
marc 77c3db1c9b portainer update 2024-06-04 00:42:52 +02:00
marc 10b0b49188 heimdall update 2024-06-04 00:42:46 +02:00
marc d138a59ffa sablier conf 2024-06-04 00:42:29 +02:00
marc 3f82715281 dockge sablier 2024-06-04 00:42:19 +02:00
marc 1e84c3a252 webshot sablier 2024-06-04 00:42:13 +02:00
marc 8c596a3c88 pihole minor change 2024-06-03 01:39:04 +02:00
marc 1f92b3668b arch that works 2024-06-03 01:38:57 +02:00
marc 451d8e8c56 appflowy that doesnt work 2024-06-03 01:38:47 +02:00
marc 200e2ebbd4 pandoc fix network 2024-06-03 00:19:15 +02:00
marc 39b45c338c authentik that works 2024-06-03 00:14:43 +02:00
marc f8d7acf41a focalboard 2024-06-03 00:14:34 +02:00
marc d777185831 traefik conf 2024-06-03 00:14:26 +02:00
marc 0a9a612c86 traefik fix 2024-06-03 00:14:14 +02:00
marc cc694305ca ldap manager broken 2024-06-03 00:13:52 +02:00
marc 817325bda0 arch.yml sablier 2024-06-03 00:13:45 +02:00
marc dc22fb93ae ocis no ldap support 2024-06-03 00:13:38 +02:00
marc fd99f73720 shelp that doesnt work 2024-06-03 00:13:31 +02:00
marc e23ce953aa plex that doesnt work 2024-06-03 00:13:23 +02:00
marc 418ac9cb58 qbittorrent.yml that works 2024-06-03 00:13:10 +02:00
marc 3603af2e6b sablier too 2024-06-03 00:12:54 +02:00
marc 0b56ff74b0 heimdall update 2024-06-03 00:12:33 +02:00
marc e1e31df740 sablier 2024-06-03 00:12:16 +02:00
marc 118ff72432 swarm visualizer 2024-06-03 00:11:13 +02:00
marc ab3cd77337 renamed to visualizer 2024-06-02 20:32:52 +02:00
marc 7ad0563f63 allow dynamic config 2024-06-02 20:32:23 +02:00
marc 67a793771f sablier services 2024-06-02 20:29:24 +02:00
marc 27349f9ee9 not localhost 2024-06-02 17:58:47 +02:00
marc 65f2e0f6ad syncthing ldap 2024-06-02 17:55:16 +02:00
marc 0e8a568c30 web-terminal ldap protected 2024-06-02 17:55:08 +02:00
marc 31865372f8 crontab ldap 2024-06-02 17:54:46 +02:00
marc 8c6c110e3a jellyfin that works without postgres 2024-06-02 17:54:29 +02:00
marc 6c26498aa2 dbdesigner that works 2024-06-02 17:54:18 +02:00
marc 4b9b63eb00 authentik that works 2024-06-02 17:54:10 +02:00
marc 222b8cb7ae sablier 2024-06-02 17:54:01 +02:00
marc df2d72a34e resume that works 2024-03-08 15:48:25 +01:00
marc e34826a2ff peer2profit 2024-02-17 17:47:42 +01:00
marc d76a5f87b6 rancher that works 2024-02-17 17:41:05 +01:00
marc 7722668c7e mermaid 2024-02-17 17:33:45 +01:00
marc 8a85df83ac grafana ignore 2024-02-12 10:12:39 +01:00
marc 13297f7bb2 authelia cloudflare 2024-02-12 10:11:03 +01:00
marc 9c172ce972 minio 2024-02-12 10:10:56 +01:00
marc 9c4b78343d appflowy improvmeent 2024-02-12 10:10:39 +01:00
marc a192af5514 moodle 2024-02-05 13:09:13 +01:00
marc 5a2afddc82 no fdroid 2024-02-05 12:59:06 +01:00
marc 8a45f2973d tried to deploy fdroid 2024-02-05 12:58:23 +01:00
marc d9e052330d mongo cloudflare 2024-01-31 12:37:46 +01:00
marc 288d2fb836 no wger container name 2024-01-31 11:13:20 +01:00
marc fc793d7c4d no cloudflare tls resolver 2024-01-31 11:12:51 +01:00
marc 257398fb3f no wger2 2024-01-31 09:49:25 +01:00
marc 6db89ec924 nextcloud conf that loads env vars 2024-01-31 09:32:17 +01:00
marc cbdb0760c5 paperless 2024-01-31 09:27:44 +01:00
marc 501efbde23 suitecrm but no postgres 2024-01-31 09:14:22 +01:00
marc 83931cf42a wallabag cloudflare 2024-01-31 09:14:06 +01:00
marc 1bbc9f93a9 resume 1 container that ships front and back 2024-01-30 18:42:56 +01:00
marc e0a10d8a39 minio for reactive resume 2024-01-30 18:42:37 +01:00
marc e4ecce30be mailu that works but just need some port forwarding 2024-01-30 18:05:46 +01:00
marc 0a8c70ccc1 docuseal that works for now just needs smtp 2024-01-30 18:05:25 +01:00
marc ef2d13b0e2 trying to fix resume 2024-01-30 18:05:14 +01:00
marc 12ffe77f19 mail-client mail-sever 2024-01-20 01:13:22 +01:00
marc d685b50f17 no ldap 2024-01-20 01:12:57 +01:00
marc 42d62047cb peer2profit 2024-01-19 23:38:12 +01:00
marc 38a19b35ed wger nginx conf 2024-01-19 23:26:37 +01:00
marc 37171ecaa6 serge cloudflare 2024-01-18 17:37:23 +01:00
marc c4dbe8ef5a restart 2024-01-18 17:37:16 +01:00
marc e60178869a wger 2024-01-18 17:37:10 +01:00
marc 3686b4169f restart 2024-01-16 18:51:40 +01:00
marc cc39fd8094 rancher 2024-01-16 18:33:44 +01:00
marc 71076aaa9c restart 2024-01-16 17:55:58 +01:00
marc 263871a6b8 changed crontab name 2024-01-16 17:55:21 +01:00
marc ab3b80fd42 resume fix 2024-01-16 17:54:24 +01:00
marc a6045cf24e focalboard restart unless stopped 2024-01-16 17:51:21 +01:00
marc 8083b24b9c nextcloud 2024-01-14 19:48:48 +01:00
marc 773057ee11 jellyfin.marcpartensky.com 2024-01-13 16:13:13 +01:00
marc 7c495468e7 portainer cloudflare 2023-12-27 02:08:39 +01:00
marc 0a5c34cdb3 ffsync 2023-12-27 02:08:20 +01:00
marc c7a789f5f5 portainer cloudflare 2023-12-26 19:51:51 +01:00
marc 9cec81310b vaultwarden cloudflare 2023-12-26 19:51:42 +01:00
marc 7fcee1c500 traefik cloudflare 2023-12-26 19:51:35 +01:00
marc df96242c7e pgadmin cloudflare 2023-12-26 19:51:27 +01:00
marc 1e6a20e9e0 focalboard cloudflare 2023-12-26 19:51:18 +01:00
marc 5437824ad2 srv 2023-12-20 16:30:52 +01:00
marc 4b49454956 merge 2023-12-20 16:28:56 +01:00
marc 23d3acde55 http for cloudflrae 2023-12-07 16:06:33 +01:00
marc f4cf1f151d Merge branch 'master' into cloudflare 2023-12-07 15:59:46 +01:00
marc 3c12ab138c clouflare 2023-12-07 15:59:27 +01:00
marc 233d83750b fix serge
Check docker compose files / build (push) Canceled after 0s
2023-11-17 15:20:49 +08:00
marc dc9e507df5 network_mode: noen 2023-11-12 10:36:05 +01:00
marc fecd479db2 website exact tag 2023-11-01 16:53:32 +01:00
marc d35ae463b5 exact tag 2023-11-01 03:25:15 +01:00
marc 302126b5f4 web entrypoint instead of websecure 2023-09-19 18:59:00 +02:00
marc b0115be27d dont check validity 2023-09-18 14:21:24 +02:00
marc 7e66305e16 openssl config file to maybe add in the future 2023-09-18 14:19:45 +02:00
marc c0dfd22ddb postgres new openssl script 2023-09-18 14:15:46 +02:00
marc a73471643e create-ssl-keys.sh 2023-09-18 13:49:47 +02:00
marc bfd1681932 no shown 70 2023-09-18 13:45:57 +02:00
marc 7d545b56f5 clean postgres 2023-09-18 13:41:23 +02:00
marc f0e5f9c782 key again 2023-09-18 13:40:43 +02:00
marc 35afebac37 changed names 2023-09-18 13:38:58 +02:00
marc 9bc22acb3f postgres entrypoints 2023-09-18 13:37:02 +02:00
marc 6dcb54bfc7 only ignore postgres certs not entrypoint 2023-09-18 13:35:08 +02:00
marc 2bdfc80c58 req 2023-09-18 13:28:19 +02:00
marc 09b4a8f870 certs folder 2023-09-18 13:22:16 +02:00
marc ace267cf7b test 2023-09-14 20:14:29 +02:00
marc b4a2bb9e7f pgagent for automatic backup in postgre 2023-09-14 20:08:23 +02:00
marc ea736d4707 logseq 2023-09-14 19:11:13 +02:00
marc 6a78e8cf84 cloudflare caddy 2023-08-27 20:22:10 +02:00
marc 1b5fc9f49b cloudflare tunnel 2023-08-17 15:19:46 +02:00
marc d37ca2d3d8 resume url env vars in compose 2023-06-13 22:38:56 +02:00
marc 8a320392f4 fuseki for semantic web 2023-06-07 01:45:09 +02:00
marc e3263eabcd configured etherpad for real with postgres db 2023-06-07 00:50:50 +02:00
marc 0246b885ad working on wger 2023-05-30 16:53:06 +02:00
marc 3ef9fa1210 clean agenda militant 2023-05-19 19:06:11 +02:00
marc 7d07b88395 ldap backup 2023-05-18 17:54:56 +02:00
marc 08f4da8343 ok adguard 2023-05-18 17:54:07 +02:00
marc a2ce89e46a nextcloud 2023-05-18 17:53:18 +02:00
marc 6ceec09f0d pritunl 2023-05-18 17:53:11 +02:00
marc 47dc66ac79 resume 2023-05-18 17:53:05 +02:00
marc 4afed447e8 gitea fr com 2023-05-18 17:42:54 +02:00
marc a999ddd582 adguard cloudflare 2023-05-18 17:39:20 +02:00
marc 38005bc214 filebrowser.yml fr 2023-05-18 17:39:05 +02:00
marc bb221d3a07 resume 2023-05-18 17:34:18 +02:00
marc ef7d44d4d0 wallabag tls 2023-05-18 17:30:14 +02:00
marc 16984d5906 crontab cloudflare 2023-05-18 17:26:14 +02:00
marc 49c4451d7d ytdlp fr com 2023-05-18 17:18:49 +02:00
marc 68a712c9d6 duplicati fix 2023-05-18 17:18:33 +02:00
marc 220618bc4f etesync fr for now 2023-05-18 17:18:19 +02:00
marc 1c6b9eab4d etherpad cloudflare 2023-05-18 17:12:36 +02:00
marc 07a78d3ad2 etherpad fr com 2023-05-18 17:11:40 +02:00
marc dc7ca5f2cc pandoc fr com 2023-05-18 17:06:00 +02:00
marc 6351444ffc yt-dlp.yml fr com 2023-05-18 17:05:43 +02:00
marc 843bb0d72b adguard.yml 2023-05-18 16:59:29 +02:00
marc b2c79dff79 grafana fr com 2023-05-18 16:58:07 +02:00
marc e6f24c67dd homer 2023-05-18 16:57:28 +02:00
marc 459ba34789 jellyfin fr com 2023-05-18 16:57:12 +02:00
marc 1d80b5d0ef etesync fr com 2023-05-18 16:56:27 +02:00
marc 2519c6f961 prometheus fr com 2023-05-18 16:55:45 +02:00
marc 60315f2849 fix serge 2023-05-18 16:54:24 +02:00
marc 280ca04a44 vaultwarden.com 2023-05-18 16:54:05 +02:00
marc 74f5ae0fb3 mongo 2023-05-18 16:53:23 +02:00
marc ef3944a4a6 serge com 2023-05-18 16:52:54 +02:00
marc c300da8b25 pandoc rm useless labels 2023-05-18 16:49:07 +02:00
marc 957b5d8a06 homer 2023-05-18 16:48:19 +02:00
marc 74b77919e7 whoami com et fr 2023-05-18 16:46:37 +02:00
marc be44c96847 pandoc fr 2023-05-18 16:44:58 +02:00
marc c7c40c83a9 mongo com 2023-05-18 16:44:46 +02:00
marc 1f2228a991 portainer change 2023-05-16 00:40:40 +02:00
marc 96f5d04839 com 2023-05-10 19:58:00 +02:00
marc ebb88e255b cloudflare 2023-05-10 19:56:34 +02:00
marc 2b4d85d1da swarm.marcpartensky.com 2023-05-10 19:55:13 +02:00
marc dc999354ca serge that works 2023-04-20 18:19:57 +02:00
marc cdc7c587a8 vaultwarden.com 2023-04-18 20:27:54 +02:00
marc fe08144bf5 .com 2023-04-16 18:46:19 +02:00
marc 054a7b3926 env_file svp 2023-04-16 18:36:32 +02:00
marc 765ceddcb9 tls provider 2023-04-16 18:36:15 +02:00
marc 0700c0b613 resume back to before 2023-04-14 17:35:01 +02:00
marc 68b2c59c1f makefile network pritunl 2023-04-14 16:13:29 +02:00
marc a5871d6390 beef fr 2023-04-14 16:13:04 +02:00
marc f0c7b3725e cadvisor thats work but is not optimal 2023-04-14 02:33:41 +02:00
marc ea9d7c72aa less logs 2023-04-14 02:33:25 +02:00
marc cff59eb342 jupyterlab conf 2023-04-14 02:33:12 +02:00
marc a5ef302fa4 grafana data 2023-04-14 02:32:56 +02:00
marc 1515e9e1f3 incomplete grafana 2023-04-14 02:32:43 +02:00
marc 924668c1fd prometheus thats useful 2023-04-14 02:32:33 +02:00
marc 971d025910 jupyterhub that works but could be better 2023-04-14 02:32:08 +02:00
marc 7e29add93e jupyterlab that works 2023-04-14 02:31:54 +02:00
marc 91cd6bb716 minidlna.yml 2023-04-10 18:16:57 +02:00
marc b46ae1db0f seafile 2023-04-07 20:30:19 +02:00
marc 6e3033086f numeris staging 2023-04-04 02:42:42 +02:00
marc b44546d755 rip redis password 2023-04-04 02:00:39 +02:00
marc b6ace61817 vps 2023-04-04 01:58:06 +02:00
marc e140ed9514 external redis 2023-04-04 01:45:43 +02:00
marc 516da45523 redis health 2023-04-04 01:43:15 +02:00
marc f1462d92b7 better peertube but no peertube without postfix 2023-04-04 01:42:56 +02:00
marc b90a00c28c website that works with external redis 2023-04-04 01:28:08 +02:00
marc 5bff5b7d12 redis that works 2023-04-04 01:25:25 +02:00
marc 4a2fc9e0d3 authentik is back 2023-04-04 01:25:03 +02:00
marc 37f5929511 redis port 2023-04-03 20:23:01 +02:00
marc 7fca82784e redis network 2023-04-03 20:20:15 +02:00
marc dfb057bfbf redis 2023-04-03 20:19:31 +02:00
marc ff83788463 fix vaultwarden.yml 2023-04-02 01:52:01 +02:00
marc c223983f28 /etc/traefik 2023-04-02 01:51:44 +02:00
marc 71bf5e5ab8 signoz to configure later 2023-03-31 05:25:53 +02:00
marc 40d85b3873 wallabag that works 2023-03-31 05:23:47 +02:00
marc f5b2b29376 useless 2023-03-31 04:12:41 +02:00
marc 8c10378fa5 postgres healthcheck 2023-03-31 04:11:37 +02:00
marc c416945abb introducing wallabag 2023-03-31 04:02:16 +02:00
marc 0279ecae84 trying to fix jupyterlab 2023-03-31 03:24:33 +02:00
marc 0d29cfffac trying to fix jupyterhub 2023-03-31 03:24:21 +02:00
marc 0d56b5bf03 jupyterhub custom image 2023-03-27 16:31:24 +02:00
marc 77a0c55176 hide gpg 2023-03-27 12:30:43 +02:00
marc a527c3f507 crontab docker control 2023-03-27 12:30:05 +02:00
marc 3f4b2eb9eb ipfs fr 2023-03-27 12:29:39 +02:00
marc 883632adb9 dope gpg project 2023-03-23 08:28:25 +01:00
marc 48964a4b25 vaultwarden cloudflare 2023-03-23 03:39:29 +01:00
marc 5cdfd79fe5 pritunl with mongo 2023-03-23 03:01:08 +01:00
marc 80f5a499b7 added mc-backup 2023-03-23 03:01:08 +01:00
marc 4fd5dadb0f mc-backup.yml useless 2023-03-23 03:01:08 +01:00
marc ba7deb6725 filebrowser.yml fr 2023-03-23 03:01:08 +01:00
marc 3341323db3 ipfs.yml fr 2023-03-23 03:01:08 +01:00
marc e1ec21332c pgadmin fr 2023-03-23 03:01:08 +01:00
marc d52ca0dd0c ignore mongo conf 2023-03-23 03:01:08 +01:00
marc bc23dde9fe filebrowser.yml 2023-03-23 03:01:08 +01:00
marc bb0f2913b5 matrix with postgres 2023-03-23 03:01:08 +01:00
marc 9e068b1bbc backups 2023-03-23 03:01:08 +01:00
marc 6cf118a3b1 mc-backup.yml 2023-03-23 03:01:08 +01:00
marc 963092a1cf postgres backups that work 2023-03-23 03:01:08 +01:00
marc 92f48895e2 pufferpannel.yml 2023-03-23 03:01:08 +01:00
marc 72a827ab6d crafty-controller.yml 2023-03-23 03:01:08 +01:00
marc ae86a49fd6 whoami fr 2023-03-23 03:01:08 +01:00
marc 68d0bc9bc5 mongod.conff 2023-03-23 03:01:08 +01:00
marc cf98bc8d95 mcmyadmin.fr 2023-03-23 03:01:08 +01:00
marc 85fad15233 yt-dlp multiple playlists 2023-03-23 03:01:08 +01:00
marc 2cc6edda2e fr 2023-03-11 01:08:37 +01:00
marc fa8d52a1a9 fix hydra 2023-03-11 01:08:37 +01:00
marc 17cb3e5acf pgbackups 2023-03-08 16:08:45 +01:00
marc beda918d52 makefile 2023-03-08 03:01:47 +01:00
marc a7607ab939 portainer fr 2023-03-08 02:45:28 +01:00
marc ec55c189c4 etesync that works 2023-03-08 02:27:14 +01:00
marc 809e15214b etesync 2023-03-08 01:43:09 +01:00
marc 3e1fae8e5d min.yml 2023-03-07 22:46:45 +01:00
marc 8da2c9ad92 web shit 2023-03-07 22:45:13 +01:00
marc 7025c87394 fix that shit 2023-03-07 22:45:13 +01:00
marc 977283136a minidlna.yml 2023-03-07 22:45:13 +01:00
marc f376065a54 crontabs volume 2023-03-07 22:45:13 +01:00
marc 30fbdf3c9b yt-dlp 2023-03-07 12:30:38 +01:00
marc d4de7df987 container name yt-dlp.yml 2023-03-07 12:30:38 +01:00
marc 0c183165fc tableau 2023-03-06 19:01:34 +01:00
marc 12574f3f64 jellyfin.yml that works 2023-03-03 16:32:55 +01:00
marc 50f3e98002 yt.marcpartensky.fr 2023-02-28 20:07:04 +01:00
marc 0789c3ac27 ytdlp webui 2023-02-28 20:05:50 +01:00
marc 3f7ec1b4d5 nextcloud that works with fr 2023-02-28 19:46:52 +01:00
marc f3a9d39226 vaultwarden that actually works 2023-02-28 19:24:34 +01:00
marc 1e8ffe10c1 postgres.yml 2023-02-27 18:05:34 +01:00
marc 2374995356 etherpad fr 2023-02-25 18:45:32 +01:00
marc d132de8de5 yt-dlp pls 2023-02-24 18:01:26 +01:00
marc 8ca94f5cf8 honeygaijn 2023-02-23 18:19:19 +01:00
marc 46904e1a6b discord chatgpt 2023-02-21 10:51:43 +01:00
marc 52bcbcb550 chatgpt.yml 2023-02-21 10:18:44 +01:00
marc 9c22750a26 focalboard with postgres 2023-02-19 19:59:46 +01:00
marc 61a4ee8f52 good 2023-02-16 18:03:13 +01:00
marc fbe4635d6c ignore dockvpn stuff 2023-02-14 16:20:31 +01:00
marc 641fd1c65d gitea.yml 2023-02-14 16:19:35 +01:00
marc 167067a90c dockvpn that changes everytime 2023-02-14 16:19:25 +01:00
marc 822d41be97 dock vpn 2023-02-14 10:15:11 +01:00
marc 5e26d5c6fc openvpn.yml 2023-02-14 10:08:53 +01:00
marc 62a57a3445 openvpn server 2023-02-14 10:01:56 +01:00
marc e94c2b63d2 wireguard 2023-02-13 14:53:57 +01:00
marc c1ecbdeb1a attempting to fix sqlmap 2023-02-10 11:07:04 +01:00
marc 62b6d00fcc fix postgres 2023-02-10 11:06:33 +01:00
marc f9e4575e07 android 2023-02-09 17:50:21 +01:00
marc 207aee279b android 2023-02-09 17:46:35 +01:00
marc 6615362c61 sqlmap attempt 2023-02-09 17:25:26 +01:00
marc 0be3a775d7 burpsuite that doesnt work 2023-02-09 17:22:03 +01:00
marc 8bdb75f776 feroxbuster.yml 2023-02-07 16:08:09 +01:00
marc 4e45e1f43d limit to 0.1 cpu cuz fuck ipfs 2023-02-07 12:43:26 +01:00
marc e967cdca54 ipfs cpu limits 2023-02-07 12:28:43 +01:00
marc c4347b747b sablier maybe 2023-02-07 11:53:09 +01:00
marc cf7cb474e4 ignore mailcow data 2023-02-07 11:51:55 +01:00
marc d42e307187 searx fr 2023-02-07 11:50:28 +01:00
marc e12b2b9fa4 link for doc 2023-02-07 10:19:14 +01:00
marc f58c5ae67f traefik allow ssl backend 2023-02-07 10:16:43 +01:00
marc 4d07f96e0b ldap manager go fr 2023-02-06 07:26:53 +01:00
marc 6a5a53b142 ldap manager go fr 2023-02-06 07:24:48 +01:00
marc 7f346c70d5 duplicati fr 2023-02-06 07:23:55 +01:00
marc 08c706bcfb ldap manager fr 2023-02-06 07:23:43 +01:00
marc 7be1b74cf9 matrix fr cloudflare 2023-02-06 07:01:43 +01:00
marc 192822b062 ipfs cloudflare resolver 2023-02-06 06:58:04 +01:00
marc c738f3fbb5 ipfs fr 2023-02-06 06:57:03 +01:00
marc 00fe7d2943 traefik.yml 2023-02-06 06:51:50 +01:00
marc 92ac9bc692 using cloudflare as cert resolver too now 2023-02-06 06:49:16 +01:00
marc dcf14d58b8 ldap manager fr 2023-02-06 06:48:01 +01:00
marc f6f1497847 whoami fr 2023-02-06 06:35:41 +01:00
marc b06c2f2d5b uptime fr 2023-02-06 06:34:47 +01:00
marc 6f57e8fb60 duplcati fw 2023-02-06 01:32:15 +01:00
marc 30311afda1 mailcow attempt 2023-02-06 01:28:56 +01:00
marc fea9dc1570 attemps on vault 2023-02-06 01:28:42 +01:00
marc 0e242e4b90 owncloud fr 2023-02-02 19:42:44 +01:00
marc bb8920b68c ignore focalboard 2023-02-02 19:38:23 +01:00
marc e3911fc56c focalboard that works 2023-02-02 19:37:52 +01:00
marc 6bb1499842 vaultwarden 2023-02-02 19:37:20 +01:00
marc ef838c65c7 seafile 2023-02-02 19:36:30 +01:00
marc eea2c21153 traefik with ldap 2023-02-02 19:33:36 +01:00
marc d984bba156 focalboard with my postgres 2023-02-02 19:19:10 +01:00
marc db2022e3cf seafile fr 2023-01-29 04:03:10 +01:00
marc abafdd5c5d mobydock fr 2023-01-29 04:01:51 +01:00
marc af5c4bae3a .fr 2023-01-29 04:00:48 +01:00
marc 7929039bd4 multiple links 2023-01-29 03:59:53 +01:00
marc a78e66a69a mobydock 2023-01-21 22:40:47 +01:00
marc 77cedac33f tunnel 2023-01-19 15:12:15 +01:00
marc 30ecb09e48 ialab.yml 2023-01-18 21:02:05 +01:00
marc da440fdbda discord.yml 2023-01-18 21:00:42 +01:00
marc 7dc7db4fe4 ignore 2023-01-18 19:05:23 +01:00
marc d7995abfa7 ok 2023-01-18 19:05:13 +01:00
marc 72aa309dda no openvpn data 2023-01-18 19:04:11 +01:00
marc d198f6f410 discord bot env 2023-01-18 19:03:31 +01:00
marc d6dcad85c5 filebrowser data 2023-01-18 19:02:52 +01:00
marc 573169b6c2 makefile 2023-01-18 19:01:25 +01:00
marc cb09bf0137 bye 2023-01-18 19:00:09 +01:00
marc d80d0baaa5 etienne 2023-01-18 18:59:37 +01:00
marc 28b6d77279 etherpad using pad.marcpartensky.com 2023-01-10 15:24:36 +01:00
marc 78b9bd06c4 web-terminal.yml 2023-01-09 15:29:09 +01:00
marc 907117573b read docker sock 2023-01-07 12:17:24 +01:00
marc 17b4f21317 vol 2023-01-04 00:16:59 +01:00
marc c256ad2bec openvpnclient4.yml 2023-01-04 00:16:26 +01:00
marc 3d4fa22127 openvpnclient3.yml 2023-01-04 00:16:14 +01:00
marc 0aaf395f1b openvpnclient2.yml 2023-01-04 00:16:07 +01:00
marc 5599e187e7 owncloud 2023-01-03 18:18:50 +01:00
marc da9bbdb58f filebrowser.yml 2023-01-03 18:14:12 +01:00
marc 75a4bc17b4 uptime kuma 2023-01-01 23:55:46 +01:00
marc dcac2cd2ba official openvpnclient 2023-01-01 18:04:04 +01:00
marc e7a0fcabc7 fix port 2023-01-01 16:27:23 +01:00
marc bd0ab0013f caddy network 2023-01-01 16:27:04 +01:00
marc 54c89b4488 gluetun.yml 2023-01-01 16:26:10 +01:00
marc 443dd8ab93 vpn 2023-01-01 16:00:53 +01:00
marc d3c1253bb9 Update README.md 2022-12-27 13:45:13 +01:00
marc 3b22d451d8 ldap network to nextcloud 2022-12-26 16:23:20 +01:00
marc c62039d0fe env_file 2022-12-26 16:02:10 +01:00
marc a4bfcb5921 env var 2022-12-26 15:58:12 +01:00
marc d9bb6e4db9 ldap go 2022-12-26 15:53:07 +01:00
marc ea8e230d76 nixos 2022-12-26 15:51:03 +01:00
marc c200028bc0 mongo 2022-12-26 15:47:59 +01:00
marc e985752eae ignore vaultwarden data 2022-12-26 02:22:57 +01:00
marc 82029e6f81 mongo that works 2022-12-26 02:22:24 +01:00
marc e5ca34021a vaultwarden that works 2022-12-26 02:22:02 +01:00
marc 737ebc6321 network vaultwarden 2022-12-26 01:04:45 +01:00
marc f8a1ff2e92 vaultwarden ldap 2022-12-26 00:59:30 +01:00
marc 933ddf4221 vol 2022-12-26 00:47:56 +01:00
marc f8a94d186a multiple vols 2022-12-21 00:58:19 +01:00
marc 408d8dc635 filebrowser.yml 2022-12-21 00:51:43 +01:00
marc 97c2325b95 filebrowser.yml 2022-12-20 22:57:16 +01:00
marc ca215608d6 filebrowser.yml 2022-12-20 22:55:52 +01:00
marc ab97df91ef ipfs 2022-12-18 18:41:45 +01:00
marc ee4425a4c0 ipfs 2022-12-18 18:33:50 +01:00
marc 15ba187aa3 ipfs 2022-12-18 18:28:53 +01:00
marc 7b14ba476f test front rule 2022-12-18 18:25:54 +01:00
marc 4af5047907 ipfs 2022-12-18 17:59:22 +01:00
marc f498144f5e try replacement 2022-12-18 17:52:26 +01:00
marc 6c6208aa7e /webui 2022-12-18 17:38:39 +01:00
marc 8cf865de84 ldap 2022-12-18 17:21:23 +01:00
marc 22bf9de635 net and vol 2022-12-18 17:19:56 +01:00
marc 461b6ba700 ipfs 2022-12-18 17:16:53 +01:00
marc 69567af795 makefile 2022-12-16 20:27:21 +01:00
marc f7f20a8ff8 jellyfin.yml 2022-12-16 20:26:56 +01:00
marc 717d5e3da5 pawns 2022-12-16 20:26:49 +01:00
marc 4ad20c7687 homeassistant.yml 2022-12-16 20:25:12 +01:00
marc e14c8b18c8 remove ugly pgweb 2022-12-13 03:48:18 +01:00
marc 2cfc8ee74c custom pgweb 2022-12-13 03:47:54 +01:00
marc 73047a6114 pgweb as good as before 2022-12-13 03:37:44 +01:00
marc bb41dec4f6 good postgres 2022-12-13 02:53:16 +01:00
marc c1193fcda0 gitea.yml 2022-12-13 02:02:23 +01:00
marc b1f1214534 earnapp 2022-12-13 00:22:05 +01:00
marc 7b050209a8 limits 2022-12-13 00:17:58 +01:00
marc 74c26ba715 constraints 2022-12-13 00:12:42 +01:00
marc fb2d0fb0f9 miner 2022-12-13 00:08:33 +01:00
marc d307231325 money 2022-12-12 23:47:44 +01:00
marc 5ca4abb05c earnapp.yml 2022-12-12 23:46:38 +01:00
marc 86c3bfe43f peer2profit.yml 2022-12-12 23:46:29 +01:00
marc e1f344b79f money 2022-12-12 23:46:13 +01:00
marc 5214a155ba repocket 2022-12-12 23:45:47 +01:00
marc 2b06e251dc traffmonetizer.yml 2022-12-12 23:09:16 +01:00
marc b789a73e14 packetstream.yml 2022-12-12 22:31:07 +01:00
marc 4d25b5acd2 numeris 2022-12-12 22:06:43 +01:00
marc dac90a3298 numeris 2022-12-12 22:05:46 +01:00
marc 6f38d5f199 tried honeygain 2022-12-12 22:03:01 +01:00
marc a795d948d9 honeygain.yml 2022-12-12 21:49:42 +01:00
marc 4529897377 liberapay 2022-12-12 19:42:58 +01:00
marc 4784863c70 5432 localhost 2022-12-12 19:06:08 +01:00
marc d884da1207 postgres verbose pls 2022-12-08 19:04:47 +01:00
marc f334ae8925 almost fix todolist 2022-12-08 19:04:20 +01:00
marc bd521a56ca swarm visualizer shortcut 2022-12-08 19:04:11 +01:00
marc 247b50d27f fuck ERROR: You must set the environment variables GEOIPUPDATE_ACCOUNT_ID, GEOIPUPDATE_LICENSE_KEY, and GEOIPUPDATE_EDITION_IDS! 2022-12-06 00:49:23 +01:00
marc 810b2d2193 custom ip 2022-12-06 00:46:41 +01:00
marc 10a5141b4c no ipv4 2022-12-05 23:57:34 +01:00
marc 5514cd4118 clean net and service name 2022-12-05 23:48:16 +01:00
marc 7883618dbc deploy labels 2022-12-05 23:17:39 +01:00
marc e80a8b36ac mailcow 2022-12-05 23:16:22 +01:00
marc 60287821a6 bye oxivia 2022-12-05 22:56:30 +01:00
marc 18481bee41 adgaurd 2022-12-05 01:42:07 +01:00
marc 48c11963f8 wireguard client 2022-11-29 03:59:24 +01:00
marc 6619c4ef47 bye 2022-11-29 03:57:25 +01:00
marc 3df4d69b98 wireguard conf 2022-11-29 03:57:05 +01:00
marc 4956838f8f wireguard conf 2022-11-29 03:56:33 +01:00
marc ae214249a3 node labels 2022-11-29 03:23:52 +01:00
marc bc30990044 moved 2022-11-29 03:23:36 +01:00
marc 69a2c7176e valentin 2022-11-29 03:04:43 +01:00
marc b910e72d40 website 2022-11-29 02:32:25 +01:00
marc 8af467d970 health 2022-11-29 01:35:44 +01:00
marc 0e1df36451 seafile that works 2022-11-29 01:12:58 +01:00
marc 9c0faf4e70 no miner 2022-11-28 16:51:51 +01:00
marc b1e7c758a7 no arch for now 2022-11-28 16:50:04 +01:00
marc 16a92ecdb2 valentin 2022-11-28 16:49:37 +01:00
marc 47ff6e0f9e oxivia 2022-11-28 15:12:50 +01:00
marc ecca22e07a traefik is default now 2022-11-28 15:10:04 +01:00
marc 97002dd7aa might as well start first 2022-11-28 14:37:57 +01:00
marc 7c5b5d66ff bye todolist 2022-11-28 14:35:11 +01:00
marc c757aca483 soon mysql alone 2022-11-23 10:56:59 +01:00
marc 8a71408485 numeris.yml 2022-11-23 10:37:02 +01:00
marc bf62773448 numeris 2022-11-23 10:32:10 +01:00
marc f1124be5eb numeris 2022-11-23 10:30:58 +01:00
marc 6d0ef3dff5 numeris 2022-11-23 10:30:07 +01:00
marc fa8f90d8c3 numeris on top 2022-11-23 10:24:09 +01:00
marc edc0d4df00 numeris v1 2022-11-23 10:19:33 +01:00
marc b958a809c5 streamlit 2022-11-21 16:18:15 +01:00
marc 0a3cd3f04b streamlit 2022-11-21 16:09:13 +01:00
marc 170e21e0c8 seax 2022-11-21 16:05:15 +01:00
marc 4a3dcc890f streamlit 2022-11-21 16:03:23 +01:00
marc 091a714713 adguard config 2022-11-21 16:03:11 +01:00
marc fb4b0f9cc0 port 2022-11-21 15:54:00 +01:00
marc 0f96683e24 searx 2022-11-21 15:44:37 +01:00
marc 19ae780bb6 adguard clean 2022-11-18 23:59:13 +01:00
marc 9012dabb3e gitbook.yml 2022-11-18 23:52:01 +01:00
marc fcc7c4cd2a gitbook custom image 2022-11-18 23:38:13 +01:00
marc 1ece8598da gitbook 2022-11-18 21:22:46 +01:00
marc bd2ac5a2ef no 3000 open 2022-11-18 02:11:32 +01:00
marc 45d9564e95 docker craft 2022-11-18 02:02:55 +01:00
marc 3d600876a1 messed up 2022-11-18 02:00:49 +01:00
marc 4f654e2f53 link 2022-11-18 01:59:46 +01:00
marc 38adf360ef discord 2022-11-18 01:58:34 +01:00
marc def409af3f reade 2022-11-18 01:57:13 +01:00
marc 9cc764fc12 README.md 2022-11-18 01:56:10 +01:00
marc d3d578ae26 swarm visualizer that works 2022-11-18 01:54:30 +01:00
marc a9b3660403 kippo.yml 2022-11-18 01:54:18 +01:00
marc 1c0b129391 webshot.yml 2022-11-18 01:49:30 +01:00
marc 7cc8a4055b swarm-visualizer.yml 2022-11-18 01:31:08 +01:00
marc dfa86d81fe registry.yml 2022-11-18 01:13:01 +01:00
marc eec038c519 cowrie.yml 2022-11-18 00:45:22 +01:00
marc ec10e794be cowrie.yml 2022-11-18 00:42:48 +01:00
marc 75d096a5ee fix volume 2022-11-17 23:54:15 +01:00
marc cab99c5f26 cowrie.cfg 2022-11-17 23:07:54 +01:00
marc aea6325487 cowrie 2022-11-17 23:05:10 +01:00
marc 88084a581c wireguard.yml 2022-11-17 22:47:19 +01:00
marc 5c5d77d125 satisfactory.yml 2022-11-17 22:39:28 +01:00
marc 0f4bbf7aa4 fix port 2022-11-17 18:52:11 +01:00
marc 6bbede0a65 board.marcpartensky.com 2022-11-17 18:51:17 +01:00
marc 6f325a59db focalboard.yml 2022-11-17 18:49:33 +01:00
marc 68b6b3fbcd todolist deploy labels 2022-11-14 10:31:41 +01:00
marc 2ec47dff76 vaultwarden deploy labels 2022-11-14 06:35:22 +01:00
marc c00dd838c6 adguard deploy labels + ldap 2022-11-14 06:30:12 +01:00
marc 71a6e1c79b mongo express 2022-11-14 06:28:15 +01:00
marc 794822c542 heimdall with ldap 2022-11-14 06:23:37 +01:00
marc 2e1918b793 phpmyadmin too 2022-11-14 06:20:18 +01:00
marc c9c28030c6 wordpress deploy labels 2022-11-14 06:19:00 +01:00
marc 046044645d keycloak deploy labels 2022-11-14 06:17:35 +01:00
marc a534e28c31 sslh with traefik 2022-11-14 06:12:38 +01:00
marc 5d0b6bb4c3 fix peertube 2022-11-14 05:58:02 +01:00
marc a3c08af485 being gentle with gitlab 2022-11-14 05:57:03 +01:00
marc 2018b1d0f3 fix mistake 2022-11-14 05:54:27 +01:00
marc 9939880334 gitlab ram is 512 2022-11-14 05:53:27 +01:00
marc 537746a6cb gitlab deploy labels 2022-11-14 05:50:56 +01:00
marc 8e4394b44b secured pgweb 2022-11-14 05:48:23 +01:00
marc 520a62c289 ldap options once and for all 2022-11-14 05:37:44 +01:00
marc 85cd595267 fuck pgweb health 2022-11-14 05:33:00 +01:00
marc 84c6632093 pgweb is its own thing 2022-11-14 05:31:37 +01:00
marc c4ec620e04 pandoc.yml deploy labels 2022-11-14 05:28:01 +01:00
marc 9339fa9b79 mcmyadmin deploy labels 2022-11-14 05:27:11 +01:00
marc 81a05cba11 pritunl comment 2022-11-14 05:18:50 +01:00
marc a472002822 fix homer port 2022-11-14 05:09:36 +01:00
marc fa927dd63c pritunl deploy labels 2022-11-14 05:09:02 +01:00
marc a9d952ef37 homer deploy lables 2022-11-14 05:07:23 +01:00
marc b00207c6c0 swarmpit deploylabels 2022-11-14 05:06:19 +01:00
marc bedb598793 portainer deploy labels 2022-11-14 04:47:50 +01:00
marc 6d8e1ce97f pgadmin deploy labels 2022-11-14 04:45:27 +01:00
marc 22fba56a6a deploy labels 2022-11-14 04:42:52 +01:00
marc 07361d978e deploy labels 2022-11-14 04:39:31 +01:00
marc c2a932cbcd agenda militant deploy labels 2022-11-14 04:37:57 +01:00
marc 816abc1044 ialab.yml 2022-11-14 04:36:16 +01:00
marc a6ef57cb83 gitea deploy labels 2022-11-14 04:35:06 +01:00
marc 19649f8028 logs are back 2022-11-14 04:33:18 +01:00
marc bc5212dc9b marcpartensky/valentin-website 2022-11-14 04:31:20 +01:00
marc b4e0d5e83d deploy labels 2022-11-14 04:23:53 +01:00
marc 997378062c jupyterhub deploy labels 2022-11-14 04:22:05 +01:00
marc c0906d1ce1 valentin website 2022-11-14 04:18:36 +01:00
marc 4edf3d63f3 sablier 2022-11-13 07:32:56 +01:00
marc af81e6b0ab deploy labels 2022-11-13 07:17:47 +01:00
marc 7ef19365a9 sablier and souin 2022-11-13 06:57:41 +01:00
marc 04070fe852 unsecure for now 2022-11-13 06:55:37 +01:00
marc fa47916247 i tried 2022-11-13 06:11:44 +01:00
marc d8e0311ca7 attempt to secure 2022-11-13 06:09:27 +01:00
marc 8267b80214 need to be insecure 2022-11-13 05:40:50 +01:00
marc 2bc8ed274b fix whoami 2022-11-13 05:38:07 +01:00
marc e628a7137a fix port 2022-11-13 05:34:28 +01:00
marc ce7aadca21 port too 2022-11-13 05:31:17 +01:00
marc f69c8ced98 enable 2022-11-13 05:28:56 +01:00
marc 92ffd3ce73 3.9 2022-11-13 05:28:30 +01:00
marc 28cb6d17ed whoami 2022-11-13 05:27:58 +01:00
marc 4d3b881959 whoami 2022-11-13 05:27:04 +01:00
marc 1166bede86 port 2022-11-13 05:23:49 +01:00
marc ac451e6519 deploy labels 2022-11-13 05:21:06 +01:00
marc a5a564327a deploy labels 2022-11-13 05:19:05 +01:00
marc 10360bf14a swarm labels 2022-11-13 05:17:58 +01:00
marc ee978ab20d swarm 2022-11-13 05:15:51 +01:00
marc 30aa8ca1bf fix typo 2022-11-13 05:13:33 +01:00
marc 539bd67014 /usr/local/bin 2022-11-13 05:04:51 +01:00
marc b4440f585b traefik is in path 2022-11-13 05:02:11 +01:00
marc d91e8d0575 enabling ping for traefik healthcheck 2022-11-13 05:00:02 +01:00
marc 37ee6f7988 traefik 2022-11-13 04:53:05 +01:00
marc 31c80cec44 traefik default net 2022-11-13 04:31:50 +01:00
marc b34a52faf4 traefik swarm labels 2022-11-13 04:31:33 +01:00
marc 5b2e634acf traefik config is now public 2022-11-13 04:15:31 +01:00
marc acd2667ba5 comments 2022-11-13 04:13:25 +01:00
marc a364eccb10 clean 2022-11-13 04:09:51 +01:00
marc 2052ac2810 adguard home 2022-11-13 04:09:24 +01:00
marc fd7e3074bc traefik 2022-11-08 07:05:55 +01:00
marc adc624ce0b jupyterhub config that works 2022-11-08 06:00:59 +01:00
marc 3dc5184c62 traefik for now 2022-11-08 01:56:30 +01:00
marc 0deb6d5788 ldap 2022-11-04 22:07:29 +01:00
marc 5042a8e4b8 ldap 2022-11-04 22:07:25 +01:00
marc 98b4077c07 healthcheck 2022-11-04 20:05:50 +01:00
marc b9e06dbc54 tiny 2022-11-04 17:54:58 +01:00
marc d58005764c string 2022-11-02 20:27:19 +01:00
marc 2fa50318d1 ok 2022-11-02 20:26:54 +01:00
marc 91689206db tiny 2022-11-02 01:39:47 +01:00
marc c3e9c66d77 restart 2022-11-01 23:44:12 +01:00
marc 9726ec12a6 clean 2022-11-01 23:42:13 +01:00
marc c5e047ae5b conf 2022-11-01 23:32:42 +01:00
marc 78e493ff49 env file 2022-11-01 23:28:00 +01:00
marc 3e59d1ea92 fix 2022-11-01 23:18:39 +01:00
marc 163fb2348e seafile-tiny.yml 2022-11-01 23:10:03 +01:00
marc dcd450b076 nextcloud in postgres network 2022-11-01 18:29:44 +01:00
marc 4cef4af1e9 2 docker-compose files 2022-10-26 01:46:40 +02:00
marc 894bfd951b ignore postgres 2022-10-26 01:45:15 +02:00
marc 1f42836ba4 srv postgres 2022-10-26 01:36:41 +02:00
marc 59e42aa77a fix caddy 2022-10-26 01:33:08 +02:00
marc 28cf4d06ab env vars everywhere 2022-10-26 01:27:02 +02:00
marc 703230968b pgadmin 2022-10-26 01:20:50 +02:00
marc ac7bb1f70a applying version 14 2022-10-26 00:59:10 +02:00
marc 5b7578aefb same applies for caddy 2022-10-26 00:52:59 +02:00
marc 248925e652 dont depend on unexisting project 2022-10-26 00:52:43 +02:00
marc 1859648bae bye useless volume 2022-10-26 00:51:43 +02:00
marc 554b691f3e forgot postgres network 2022-10-26 00:50:17 +02:00
marc 93432fc48c postgres 2022-10-26 00:49:15 +02:00
marc c3feb330b6 postgres external true 2022-10-26 00:48:33 +02:00
marc 44f5d56d96 make network 2022-10-26 00:47:18 +02:00
marc b8b3ecdc63 mount sql scripts why not 2022-10-26 00:45:02 +02:00
marc 6881bffcde start optimized 2022-10-26 00:35:08 +02:00
marc 66f4dea749 start for prod 2022-10-26 00:34:14 +02:00
marc c80486d31e forgot ps 2022-10-26 00:32:01 +02:00
marc 3b3c28847f matrix 2022-10-26 00:31:13 +02:00
marc a54458b70a changing ci 2022-10-26 00:30:30 +02:00
marc 5ea535acd2 start dev comment 2022-10-26 00:29:41 +02:00
marc 527da92e4a fix and start prod 2022-10-26 00:29:16 +02:00
marc 215bc793bf keycloak.yml 2022-10-26 00:25:41 +02:00
marc f7a3ed8f28 path != dir 2022-10-26 00:01:32 +02:00
marc f2853f428f yml 2022-10-26 00:00:51 +02:00
marc 51e944c98f matrix healthcheck 2022-10-25 23:59:58 +02:00
marc f9a067d2f4 languagetool 2022-10-17 05:06:21 +02:00
marc 055d6a826b jupyterlab that actually works for once 2022-10-03 11:13:04 +02:00
marc e90ef74523 jupyterhub_config.py 2022-10-02 23:51:23 +02:00
marc 001bf396df fix port 2022-10-02 23:41:16 +02:00
marc 24daf39f6d libreswan 2022-09-30 23:03:14 +02:00
marc efc92da96e ipsec 2022-09-30 22:14:46 +02:00
marc 7adf5800b0 volumes 2022-09-30 22:08:45 +02:00
marc f170b1395a ipsec 2022-09-30 22:06:00 +02:00
marc 7c0997f6f3 duplicati with traefik 2022-09-21 11:46:03 +02:00
marc 789baaf316 fix dumb mongo express mistake 2022-09-21 11:42:23 +02:00
marc 540b228247 agenda militant 2022-09-19 22:24:01 +02:00
marc f584e872ce experimenting with traefik 2022-09-12 02:07:39 +02:00
marc 5308132ff8 change 2022-09-12 01:13:26 +02:00
marc d5889d1c22 back 2022-09-12 01:08:31 +02:00
marc 05fcc6dbd1 static.yml 2022-09-12 00:36:46 +02:00
marc 8002db31d2 command 2022-09-12 00:02:20 +02:00
marc a2bed82c91 fix pgweb traefik conf 2022-09-12 00:02:20 +02:00
marc 3765ab5565 node = manager 2022-09-11 23:46:22 +02:00
marc 6f2918b34c traefik.env 2022-09-01 21:55:44 +02:00
marc 49b3f28b36 no conf file 2022-08-25 21:25:42 +02:00
marc d7667dbcde ldap network 2022-08-25 21:04:45 +02:00
marc 29b67cb2a3 Merge branch 'master' into traefik-static 2022-08-24 18:15:41 +02:00
marc b86fd1a6f2 bye homeserver.yaml from matrix 2022-08-24 18:15:27 +02:00
marc 4a69f141e9 traefik static conf file ignored 2022-08-24 18:15:12 +02:00
marc 596cfe44b3 traefik.yml 2022-08-24 08:07:27 +02:00
marc bf5f4a86d9 trafik static 2022-08-24 08:05:36 +02:00
marc 0a5f3f9e7d trying with heimdall 2022-08-23 08:46:41 +02:00
marc 37b7d5b846 fix mistake 2022-08-23 08:47:37 +02:00
marc 87cb0d3160 trying auth middleware in traefik conf 2022-08-23 08:42:17 +02:00
marc 5f55804c43 fix conflict 2022-08-20 20:29:57 +02:00
marc 8d7d9f166c dont touch working dir 2022-08-20 05:00:51 +02:00
marc 6718686e58 config 2022-08-19 23:38:28 +02:00
marc 3711fd938d make merge 2022-08-19 23:35:50 +02:00
marc 8943c9db34 fix name 2022-08-19 23:35:10 +02:00
marc 2e72fbe681 make compose 2022-08-19 23:34:34 +02:00
marc 5e179cdb0d no need for oxivia_mysql 2022-08-19 23:33:37 +02:00
marc d5797eb860 fix ghost dependency 2022-08-19 23:32:39 +02:00
marc 21d09296ce no dependency over external containers 2022-08-19 23:30:42 +02:00
marc a579863acb no directory 2022-08-19 23:29:02 +02:00
marc abba5d1823 clone project 2022-08-19 23:27:24 +02:00
marc 295b77e091 fix for loop 2022-08-19 23:24:21 +02:00
marc 979263685a sudo bc github wants it 2022-08-19 23:07:09 +02:00
marc 91af2ad85a attempting to update apt to fix error 2022-08-19 23:06:14 +02:00
marc d9b7929b92 changed workflow 2022-08-19 23:04:50 +02:00
marc 635df32b93 fix indent 2022-08-19 22:56:58 +02:00
marc a4e9b30617 seafile_memcached 2022-08-19 22:37:50 +02:00
marc 2db7b00402 fix 2022-08-19 22:31:33 +02:00
marc 2feaa57f79 string 2022-08-19 22:30:42 +02:00
marc 27ba254cef env file 2022-08-19 22:30:13 +02:00
marc 871dcf640b good volume name 2022-08-19 22:25:34 +02:00
marc a04001b34e fix port 2022-08-19 22:24:01 +02:00
marc 01b57f8a86 fix seafile.yml 2022-08-19 21:50:04 +02:00
marc 533e166249 seafile.yml 2022-08-19 21:39:18 +02:00
marc a09b7dfb1b changing seafile 2022-08-19 21:28:39 +02:00
marc fd31196d75 tableau 2022-08-17 18:36:55 +02:00
marc 9df8c8e479 im dumb 2022-08-16 00:47:06 +02:00
marc 65e7b9c6a5 fix 2022-08-16 00:46:02 +02:00
marc 139b1f4e15 all together 2022-08-16 00:45:26 +02:00
marc 1c47280809 do not care about container names 2022-08-16 00:30:36 +02:00
marc 16cfdb7feb better when in same network 2022-08-16 00:28:30 +02:00
marc 877b1b2928 copied valentin.yml to services 2022-08-16 00:23:29 +02:00
marc 3e3c0a8194 external 2022-08-15 23:38:30 +02:00
marc 1fcb29d655 bye dependency that does not even work with swarm 2022-08-15 23:03:45 +02:00
marc 53ffd73c33 bye dependency that does not even work with swarm 2022-08-15 23:02:06 +02:00
marc e1a10ab5c9 fix 2022-08-15 23:01:23 +02:00
marc 28bd51c5af ports 2022-08-04 23:01:06 +02:00
marc 28a3974f1e now cmd 2022-08-04 12:47:01 +02:00
marc da7c18b93f full path 2022-08-04 12:43:57 +02:00
marc 2d1b767958 default options 2022-08-04 12:39:04 +02:00
marc d7ce33dbde why bother 2022-08-04 12:29:14 +02:00
marc 5fa65d9bd2 fix dumb conflict 2022-08-04 12:10:23 +02:00
marc f7c6d220d9 wordpress got phpmyadmin now 2022-08-03 21:48:13 +02:00
marc 7d94261be7 tableau update 2022-08-03 19:59:04 +02:00
marc 73d45aa9cf bye 2022-08-02 16:12:31 +02:00
marc 3660c57e00 wget 2022-08-02 16:04:49 +02:00
marc d37785e8cf added healthcheck to sslh 2022-08-02 16:01:08 +02:00
marc 6846e74d8f fixing ip address 2022-08-02 15:57:35 +02:00
marc 7a2d898765 fix matrix 2022-08-02 15:32:28 +02:00
marc 8d93d0411c exposing vnc 2022-08-01 17:33:11 +02:00
marc 62e701cedc rustdesk 2022-07-31 18:15:55 +02:00
marc 9bed10a4aa rustdesk server 2022-07-31 18:06:45 +02:00
marc e349098adb ops 2022-07-26 13:14:22 +02:00
marc 1c908406a9 new port too 2022-07-26 13:08:55 +02:00
marc 9f3bea3a83 tcp udp 2022-07-26 13:04:49 +02:00
marc dbeb6cfb7d 1.18 2022-07-26 13:01:41 +02:00
marc 07ffa2b803 1.18.12 2022-07-26 13:00:39 +02:00
marc e40c2ca4db string 2022-07-26 12:54:49 +02:00
marc b64abd7da3 bedrock 2022-07-26 12:50:35 +02:00
marc 0ee8ca78a4 8443 2022-07-25 01:11:11 +02:00
marc 10921cf101 weird image 2022-07-25 01:09:13 +02:00
marc fbe5fba52c restart unless-stopped 2022-07-25 01:07:57 +02:00
marc e70de8f8f5 amondit sslh 2022-07-25 01:03:11 +02:00
marc ea0b500fd1 caddy without 443 2022-07-25 00:52:12 +02:00
marc 772b9e9598 mc backup 2022-07-25 00:48:48 +02:00
marc d42225574c rocket not done yet 2022-07-25 00:33:36 +02:00
marc 698c434b6b home volume 2022-07-24 23:18:28 +02:00
marc dfe9e23210 arch to vps.txt 2022-07-17 03:29:05 +02:00
marc 5bc6fb051f Revert "champi new picture"
This reverts commit 4067adb9c0.
2022-07-17 03:18:29 +02:00
marc 4067adb9c0 champi new picture 2022-07-17 03:04:07 +02:00
marc 08069b7102 new picture 2022-07-17 02:01:19 +02:00
marc 6309048fe5 first backup config 2022-07-16 23:49:28 +02:00
marc 69fd1ebb71 few vs lots 2022-07-16 23:39:07 +02:00
marc 07ec14c67c very precise readme 2022-07-16 23:37:44 +02:00
marc 1af1f20a4e readme 2022-07-16 23:23:05 +02:00
marc 38a5d25a8d coffee 2022-07-16 23:22:27 +02:00
marc 77354187f4 mc-router 2022-07-13 01:26:29 +02:00
marc 7aa2efb3ae srv 2022-07-09 23:41:23 +02:00
marc 168d893ff1 networks caddy 2022-07-09 23:12:02 +02:00
marc e80bac5c27 duplicati 2022-07-09 23:10:23 +02:00
marc 3cabdeae07 8200 port 2022-07-09 23:05:13 +02:00
marc 7f7e3df719 labels for caddy 2022-07-08 23:15:44 +02:00
marc 4dd1be4653 duplicati 2022-07-08 23:09:48 +02:00
marc 7fe37bda48 with an s 2022-06-21 05:32:13 +02:00
marc 0f4e8d27f7 forgot arch 2022-06-21 05:31:50 +02:00
marc 0bdfdecac3 arch.yml 2022-06-21 05:28:42 +02:00
marc be8ad09250 tf wf too 2022-06-19 19:57:13 +02:00
marc 98e41d5334 mongo express not equal discord bot mongo express 2022-06-19 19:54:49 +02:00
marc ad84d7315d mongo 2022-06-19 18:34:00 +02:00
marc e34488bad4 mongo 2022-06-19 18:33:32 +02:00
marc 3f1daf23b8 icone 2022-06-11 03:47:07 +02:00
marc 472304b984 ignoring pxe 2022-06-11 03:06:27 +02:00
marc c31e35ca76 jungle 2022-06-11 02:52:31 +02:00
marc 8c4ce762f2 champi 2022-06-11 02:52:17 +02:00
marc 3b00f6d238 bye mythes 2022-06-11 02:51:57 +02:00
marc d6a4925a1c mythes 2022-06-11 02:31:16 +02:00
marc b00dbf0692 champi 2022-06-11 02:23:49 +02:00
marc df7af2918e biomes 2022-06-11 02:22:30 +02:00
marc be2c0502d0 fix 2022-06-11 01:18:31 +02:00
marc 1ea93ef735 origin 2022-06-11 01:08:53 +02:00
marc 3d338ef897 4 2022-06-11 01:08:15 +02:00
marc c8bb1c96d1 origin 2022-06-11 01:07:50 +02:00
marc 379ef37236 minecraft bind mount 2022-06-07 20:28:11 +02:00
marc 2335006a75 ssh-chat 2022-06-01 21:40:38 +02:00
marc 7bd036eb4a jenkins bye 50000 2022-05-30 14:30:56 +02:00
marc 1b6f39956e mail 2022-05-30 01:58:53 +02:00
marc 7c2d0c8f2d fix port usesd 2022-05-30 01:57:30 +02:00
marc abaa74a9aa wing1 net 2022-05-30 01:53:33 +02:00
marc 90c878fadc panel 2022-05-30 01:52:42 +02:00
marc 55272980be volume fix 2022-05-30 01:51:29 +02:00
marc 899f803212 pterodactyl wing 2022-05-30 01:49:19 +02:00
marc f7752dee94 fix 2022-05-30 01:07:50 +02:00
marc 1ca8846417 networks 2022-05-30 01:05:44 +02:00
marc bf938bbf57 fix 2022-05-30 00:57:35 +02:00
marc fae0d2814d fix 2022-05-30 00:55:08 +02:00
marc db13614954 ptero2 2022-05-30 00:54:09 +02:00
marc a7a73a09a8 ptero fix 2022-05-30 00:49:52 +02:00
marc 59e70d58b2 external 2022-05-27 22:16:57 +02:00
marc 9643bfbb53 homer 2022-05-27 22:16:41 +02:00
marc 0ef17ae38e sshpiperd 2022-05-26 18:02:07 +02:00
marc 17239ccb66 1 replica only 2022-05-25 15:18:49 +02:00
marc 562a4e3dc6 discord-bot 1 replica 2022-05-25 15:14:20 +02:00
marc 066415879f android 2022-05-21 17:28:09 +02:00
marc 8df7a3f342 tableau 2022-05-21 17:27:27 +02:00
marc e5f18a98f8 android 2022-05-21 01:40:51 +02:00
marc 0b06cea437 device 2022-05-21 01:35:05 +02:00
marc 10414241ac android.yml 2022-05-21 01:30:25 +02:00
marc 769fb74b8d pihole 2022-05-20 16:06:59 +02:00
marc 650d4f52ea pihole data 2022-05-20 16:00:29 +02:00
marc 07ed513f3e no name 2022-05-20 15:53:37 +02:00
marc 02e9dc33b1 pihole 2022-05-20 15:50:27 +02:00
marc a4a13d95ca website pgweb 2022-05-20 14:19:09 +02:00
marc 084109189b port mistake 2022-05-20 14:05:46 +02:00
marc 5c3bef0dec fix authelia 2022-05-20 12:02:38 +02:00
marc 04eeba0d0a fix pritunl labels 2022-05-20 11:47:49 +02:00
marc 5b889ff557 pritunl 2022-05-20 11:44:54 +02:00
marc ff7b2594fd fix label 2022-05-20 11:35:15 +02:00
marc 0d2484b527 simpler labels 2022-05-20 11:28:36 +02:00
marc f697d077b8 authentik fix 2022-05-20 11:13:04 +02:00
marc 93938b1031 heimdall data ignore 2022-05-19 21:00:06 +02:00
marc d5f8f71676 heimdall 2022-05-19 20:45:33 +02:00
marc 4784e0f214 authelia fix 2022-05-19 09:32:53 +02:00
marc 3e0a3272d0 etherpad 2022-05-19 09:32:04 +02:00
marc 16eaba9338 jupyterhub traefik 2022-05-19 09:31:31 +02:00
marc 432bd66c1f jupyterlab traefik 2022-05-19 09:31:04 +02:00
marc 118ddc0624 ldap_manager traefik 2022-05-19 09:30:33 +02:00
marc 008be0d034 wordpress_oxivia traefik 2022-05-19 09:29:47 +02:00
marc fe12837226 wordpress je traefik 2022-05-19 09:28:40 +02:00
marc 5a55275c10 vault reverse proxy 2022-05-19 09:27:46 +02:00
marc da0b27caf6 seafile traefik fix 2022-05-19 09:26:06 +02:00
marc a5355987b9 rancher traefik fix 2022-05-19 09:25:49 +02:00
marc 207292fc49 pterodactyl traefik 2022-05-19 09:25:28 +02:00
marc c18381ed31 peertube env file 2022-05-19 09:24:47 +02:00
marc e6eb7349b2 peertube traefik 2022-05-19 09:24:28 +02:00
marc f341d1757b mcvnc traefik 2022-05-19 09:23:44 +02:00
marc 6b0c37f47e fix gitea date 2022-05-19 09:22:37 +02:00
marc 4026e3d070 ignoring authelia conf 2022-05-19 01:37:05 +02:00
marc fcb13faa98 authelia volume 2022-05-19 01:36:30 +02:00
marc 5a6d0facd9 typo 2022-05-19 01:21:02 +02:00
marc 029e3503ef volume 2022-05-19 01:19:59 +02:00
marc 58a0f75210 caddy net 2022-05-19 01:17:00 +02:00
marc 8dd2041640 authelia 2022-05-19 01:13:08 +02:00
marc af16a31bd3 fix traefik data and labels 2022-05-19 00:55:13 +02:00
marc a5194219ac removed mislocated data folder 2022-05-19 00:54:02 +02:00
marc 453ca9f667 removed mislocated data folder 2022-05-19 00:53:14 +02:00
marc daf47a4d1a caddy net external 2022-05-19 00:47:50 +02:00
marc d1013ceeb5 typo 2022-05-19 00:47:26 +02:00
marc a5eda56ede fix caddyfile ref 2022-05-19 00:45:12 +02:00
marc 023c14b4d3 trying caddyfile 2022-05-19 00:44:45 +02:00
marc f269161bd1 traefik 2022-05-19 00:42:30 +02:00
marc 8dff3f14ed fix caddyfile uri 2022-05-19 00:31:22 +02:00
marc 3641c168a0 renamed 2022-05-18 23:29:44 +02:00
marc 5ea0851477 mcadmin auth 2022-05-18 23:14:21 +02:00
marc 341853d55c marcpartensky caddy 2022-05-18 21:11:18 +02:00
marc 6c8da225fd fix 2022-05-16 19:35:32 +02:00
marc 745a63530d good to go 2022-05-16 19:35:02 +02:00
marc 2cf5714676 oxivia 2022-05-16 19:14:23 +02:00
marc 734b63d95f oxivia 2022-05-16 19:11:50 +02:00
marc fc28653b1a custom mail 2022-05-16 18:53:31 +02:00
marc 0d5c4b5841 removed doublons 2022-05-16 18:46:13 +02:00
marc b743f98bc1 wordpress oxivia 2022-05-14 19:41:10 +02:00
marc e9b148afce wordpress oxivia 2022-05-14 19:40:45 +02:00
marc 3fc17b2ffd labels wordpress 2022-05-14 19:39:09 +02:00
marc 674e747e55 fix https 2022-05-14 19:36:31 +02:00
marc 2dfd6595a7 redir 2022-05-14 18:27:58 +02:00
marc 8f89dfee44 less services 2022-05-14 18:18:29 +02:00
marc e5dcc5ce70 matrix registration 2022-05-14 18:16:05 +02:00
marc 297491eba4 enable registration 2022-05-06 18:42:10 +02:00
marc 1bdb84b9e8 added volumes the right way 2022-05-05 19:47:27 +02:00
marc ef15035d74 fixed bad host 2022-05-05 19:37:27 +02:00
marc 0eebbbc197 fixed links 2022-05-05 19:35:46 +02:00
marc 7a29acb0be pterodactyle everwhere 2022-05-05 19:34:27 +02:00
marc 5af221dac2 ptero 2022-05-05 19:35:19 +02:00
marc 2615456f07 pterodactyl.yml 2022-05-05 09:53:55 +02:00
marc 7857355802 pterodactyl.yml 2022-05-04 20:28:53 +02:00
marc d741e4c6f5 fix mistake 2022-04-27 20:15:25 +02:00
marc 5f0ff5e2f5 pxe 2022-04-27 20:13:24 +02:00
marc d883de37a1 fix mistake 2022-04-23 04:02:33 +02:00
marc 6773dff281 gt fix mcvnc 2022-04-23 03:55:51 +02:00
marc 12c6fc17df fix mcadmin 2022-04-23 03:55:11 +02:00
marc 079a6bbe80 raw name 2022-04-23 03:35:59 +02:00
marc bbdbc6c656 peertube 2022-04-23 02:48:07 +02:00
marc 7967e2bae6 peertube 2022-04-23 02:40:32 +02:00
marc 34fefd23a0 new matrix 2022-03-29 02:48:39 +02:00
marc 5109ca6da7 wordpress je done 2022-03-28 18:49:21 +02:00
marc b03ace0740 fix 2022-03-28 18:17:18 +02:00
marc 59c7034172 fix 2022-03-28 18:15:57 +02:00
marc 57e630081c fix 2022-03-28 18:13:58 +02:00
marc 016f94f8cc wordpress je 2022-03-28 18:13:07 +02:00
marc 27d1c1ddf1 dealing with bad health 2022-03-27 19:00:06 +02:00
marc 0310cbafce renamed 2022-03-26 15:44:43 +01:00
marc 90470981c8 why in caddy network? 2022-03-26 15:43:58 +01:00
marc 221c43cda2 vaultwarden 2022-03-25 11:14:11 +01:00
marc af6102eadb pad.marcpartensky.com 2022-03-22 15:50:58 +01:00
marc fe27e4292c shortcut registry 2022-03-20 02:54:31 +01:00
marc bf938bd39f fix gitlab 2022-03-19 23:50:44 +01:00
marc 23cb9b8815 enhanced gitlab 2022-03-19 23:38:21 +01:00
marc a0e6e02924 restart unless stopped pritunl mongo 2022-03-19 23:23:05 +01:00
marc b266e05226 g 2022-03-19 23:14:56 +01:00
marc 8d47e79491 mailcow 2022-03-19 23:07:59 +01:00
marc 568d8f618b 7011 2022-03-19 21:02:21 +01:00
marc 94e2d8370c ia 2022-03-19 20:59:35 +01:00
marc 8b2bf0c182 port 8000 2022-03-19 19:00:59 +01:00
marc deb45ce5dc take care of your business 2022-03-19 18:58:48 +01:00
marc 35021851b4 mswarm 2022-03-19 18:49:54 +01:00
marc fd762e6a68 ia 2022-03-19 18:48:53 +01:00
marc 4af4a41b7e seafile 2022-03-19 17:19:46 +01:00
marc f922e36f32 ia 2022-03-19 01:27:13 +01:00
marc 89accf5ab3 oxivia fix 2022-03-09 15:24:23 +01:00
marc 07b9802637 oxivia 2022-03-07 13:53:14 +01:00
marc 7ee56c3f09 double quotes 2022-03-07 10:50:07 +01:00
marc 619e006e10 double quotes 2022-03-07 10:49:25 +01:00
marc 408497b23a double quotes gitea 2022-03-07 10:48:13 +01:00
marc e19544ffd5 fix 2022-03-07 10:39:26 +01:00
marc e5709c0ca3 oxivia mysql 2022-03-07 10:38:54 +01:00
marc e77cbd4299 fix 2022-03-06 22:20:02 +01:00
marc 33ecf705cb ldap manager 2022-03-06 22:19:41 +01:00
marc 48ca63327e env/vps 2022-03-06 22:15:08 +01:00
marc 1a209fde97 fix 2022-03-06 20:21:27 +01:00
marc b971d81e08 fix dashes 2022-03-06 20:13:41 +01:00
marc 422ce7d46c docker 2022-03-06 20:09:49 +01:00
marc 48aaa1ef6a fix volume 2022-03-06 19:41:09 +01:00
marc 8b9c37e240 mcmyadmin 2022-03-06 19:38:03 +01:00
marc 050b7004d8 fix 2022-03-06 19:37:26 +01:00
marc 3d60cb6a19 dependencies 2022-03-06 19:37:04 +01:00
marc be93df4b19 enable swarmpit 2022-03-06 19:34:00 +01:00
marc b1f7fee413 swarmpit 2022-03-06 19:33:43 +01:00
marc 5393d02499 enable 2022-03-06 19:26:07 +01:00
marc 5d8c3e32b6 mcadmin 2022-03-06 19:25:46 +01:00
marc d9d84a272c fix 2022-03-06 19:22:24 +01:00
marc 49f6fe399a gitea 2022-03-06 19:20:04 +01:00
marc cd315efe5b gitea 2022-03-06 19:19:50 +01:00
marc 3115a40be1 net 2022-03-06 19:12:33 +01:00
marc 71e2e5d8b7 mcvnc 2022-03-06 19:11:00 +01:00
marc 25298799c8 mcvnc 2022-03-06 19:10:46 +01:00
marc cfef3bf1f9 minecraft net 2022-03-06 19:06:45 +01:00
marc 2f9d3dab16 minecraft 2022-03-06 19:06:04 +01:00
marc a15698910d minecraft 2022-03-06 19:05:20 +01:00
marc 0b8d2f2331 miner 2022-03-06 18:57:13 +01:00
marc f779b9090c pritunl + node 2022-03-06 18:56:53 +01:00
marc 619f1cff73 pritunl 2022-03-06 18:56:00 +01:00
marc 2cb0be14d9 depends on ldap 2022-03-06 18:52:30 +01:00
marc da3469cacb ldap manager 2022-03-06 18:51:33 +01:00
marc a078865989 ldap 2022-03-06 18:50:56 +01:00
marc 52a59262e2 monero-node 2022-03-06 18:49:12 +01:00
marc 95ae43f8a1 beef.yml 2022-03-06 18:46:41 +01:00
marc 9cb38fca62 enable monero miner 2022-03-06 18:45:02 +01:00
marc 7c31146e6c monero-miner 2022-03-06 18:43:59 +01:00
marc 1bfccba6df rancher 2022-03-06 18:43:17 +01:00
marc e5df01012b matrix etherpad 2022-03-06 18:39:37 +01:00
marc e78f5aef66 etherpad 2022-03-06 18:39:03 +01:00
marc cec1eff81d matrix 2022-03-06 18:37:51 +01:00
marc e68fe10d18 gitlab 2022-03-06 18:33:19 +01:00
marc 6a96f61422 fail2ban 2022-03-06 18:30:07 +01:00
marc 55ef4f21d3 fix 2022-03-06 18:28:09 +01:00
marc 0e8c771d4a fix indent 2022-03-06 18:27:26 +01:00
marc faafe98d60 fix dependencies 2022-03-06 18:27:04 +01:00
marc f4290605b9 seafile 2022-03-06 18:25:07 +01:00
marc 6ccaf182fc seafile 2022-03-06 18:24:55 +01:00
marc 7851d7bcd6 vps 2022-03-06 18:15:07 +01:00
marc d163d13fe6 fix 2022-03-06 18:14:20 +01:00
marc 1043a94d6a jenkins 2022-03-06 18:13:15 +01:00
marc 1b1611efab bye nginx 2022-03-06 18:10:23 +01:00
marc 65ea40a998 fix 2022-03-06 18:08:44 +01:00
marc 1f5c2ff52e fix 2022-03-06 18:07:47 +01:00
marc f690912f71 env/vps.txt 2022-03-06 18:06:38 +01:00
marc 1f69c67ba0 todolist.yml 2022-03-06 18:06:08 +01:00
marc 378424d273 searx 2022-03-06 18:00:16 +01:00
marc ebc3196d86 nextcloud.yml 2022-03-06 17:51:07 +01:00
marc 1e11bec6b1 template.yml 2022-03-06 17:42:48 +01:00
marc 10adc55f02 Merge branch 'files' 2022-03-06 17:39:39 +01:00
marc 25d7b3f1ad id 1000 2022-03-05 17:57:41 +01:00
marc 750458c1b8 user marc 2022-03-05 17:45:31 +01:00
marc 6beb13e21d tried new mc location 2021-05-25 18:03:08 +02:00
marc 42611ca3b7 prebuilt open web calendar image 2021-05-22 17:08:24 +02:00
marc 627a6ee08b merging with master with no buld version 2021-05-21 15:28:53 +02:00
marc cf8f1ea43b no build 2021-05-05 20:07:53 +02:00
203 changed files with 11599 additions and 477 deletions
+2
View File
@@ -1,5 +1,7 @@
liberapay: marcpartensky
patreon: marcpartensky
github: marcpartensky
custom:
# - monero:43J2XmRtjDPRLD35UsYGH2AZamFBQz7dt4VdvZXVm3SuadTrvcoXUXBRUNHqukFte23Q5TWXqhbwaLJJgoVQzzbe2AJDANQ
- https://paypal.me/marcpartensky
- https://buymeacoffee.com/marcpartensky
@@ -0,0 +1,27 @@
name: Check docker compose files
on:
push:
branches:
- master
tags:
- v*
jobs:
build:
env:
BIND_MOUNTS: "/srv"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install make and docker-compose
run: sudo apt install -y docker-compose make
# - name: Check docker-compose files
# run: for file in `find services/*`; do docker-compose -f $file config > /dev/null; done
- name: Clone validator
run: git clone https://github.com/serviceprototypinglab/dcvalidator /opt/validator
- name: Merge to docker-compose.yml
run: make merge
- name: Validate docker-compose.yml
# run: docker-compose -f stacks/docker-compose.yml config
# run: /opt/validator/validator-cli.py -f stacks/docker-compose.yml
run: docker-compose -f stacks/docker-compose.yml ps
-20
View File
@@ -1,20 +0,0 @@
name: Docker Swarm Deployed
on:
push:
branches:
- master
tags:
- v*
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Update
run: apt-get update
- name: Install ssh
run: apt-get install openssh-client -y
- name: Setup ssh agent
run: eval $(ssh-agent -s) && ssh-add <(echo $SSH_PRIVATE_KEY)
- name: Deploy to Docker swarm
run: ssh -o StrictHostKeyChecking=no $SSH_REMOTE docker swarm deploy -c vps.yml vps
+30 -1
View File
@@ -2,11 +2,40 @@ docker-compose.yml
data/openvpn
data/secrets
data/certbot
data/traefik
data/searx
data/jenkins
data/beef
data/tmate/keys
data/authelia
data/mx-puppet-discord
data/matrix
data/heimdall
data/pihole/etc-pihole
data/pxe
data/postgres/certs
data/wireguard
data/vaultwarden
data/filebrowser
data/focalboard
data/openvpn_*
data/mailcow
data/dockvpn
data/hydra
data/yt-dlp
data/mongo
data/gpg
data/redis
data/fdroid
data/grafana
data/qbittorrent
data/webdav
data/pufferpanel
data/dockge
data/ocis
data/owncloud
data/wg-easy
data/nextcloud
data.tar.gz
data.7z
data.7z.gpg
services/template.yml
+23 -6
View File
@@ -3,12 +3,29 @@ compose:
swarm:
cat ./env/vps.txt | STACK=vps xargs ./bin/docker-setup.sh
merge:
./bin/setup.sh merge vps
./bin/docker-setup.sh merge vps
mswarm: merge
docker stack deploy -c stacks/docker-compose.yml vps
down:
docker stack rm vps
pull:
for file in services/*; do docker-compose -f $$file pull; done
export:
tar cvzf data.tgz data
gpg --encrypt --recipient 'marc.partensky@gmail.com' data.tgz
rm data.tgz
network:
docker network create --driver overlay --attachable caddy
7z a -p data.7z data
import:
7z x -p data.7z
sign:
gpg --encrypt --sign --recipient 'marc@marcpartensky.com' data.7z
# rm data.tgz
networks:
docker network create --attachable caddy || true
docker network create --attachable ldap || true
docker network create --attachable postgres || true
docker network create --attachable mongo || true
docker network create --attachable vpn || true
docker network create --attachable redis || true
docker network create --subnet 172.22.1.0/24 --gateway 172.22.1.1 --attachable mailcow || true
docker network create --subnet 10.22.69.0/24 --gateway 10.22.69.1 --attachable pritunl || true
node:
docker node update --label-add net=web contabo
docker node update --label-add net=none tower
+77 -17
View File
@@ -1,24 +1,56 @@
[![Docker Swarm Deployed](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml/badge.svg)](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml)
<!-- [![Docker Swarm Deployed](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml/badge.svg)](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml) -->
# Docker
<!-- [![Docker Swarm Services](https://cdn.discordapp.com/attachments/809914059981586462/1042966875514077227/unknown.png)](https://swarm.marcpartensky.com) -->
[![Heimdall Portal](https://i.imgur.com/RiHrnck.jpeg)](https://heimdall.marcpartensky.com)
Visit my [cloud](https://heimdall.marcpartensky.com)!
Over 150 docker compose files are in the `services` folder.
## Domains
- https://marcpartensky.com
- https://pandoc.marcpartensky.com
- https://ialab.marcpartensky.com
- https://notebook.marcpartensky.com
- https://searx.marcpartensky.com
- https://cloud.marcpartensky.com
- https://wordpress.marcpartensky.com
- https://adguard.marcpartensky.com
- https://arch.marcpartensky.com
- https://authentik.marcpartensky.com
- https://cron.marcpartensky.com
- https://dbdesigner.marcpartensky.com
- https://dockge.marcpartensky.com
- https://docuseal.marcpartensky.com
- https://pad.marcpartensky.com
- https://firefox.marcpartensky.com
- https://file.marcpartensky.com
- https://board.marcpartensky.com
- https://git.marcpartensky.com
- https://gitlab.marcpartensky.com
- https://todolist.marcpartensky.com
- https://api.todolist.marcpartensky.com
- https://uml.marcpartensky.com
- https://grafana.marcpartensky.com
- https://prometheus.marcpartensky.com
- https://swarm.marcpartensky.com
- https://auth.marcpartensky.com
- https://heimdall.marcpartensky.com
- https://homer.marcpartensky.com
- https://jellyfin.marcpartensky.com
- https://jenkins.marcpartensky.com
- https://jupyterlab.marcpartensky.com
- https://mail.marcpartensky.com
- https://mcmyadmin.marcpartensky.com
- https://storage.marcpartensky.com
- https://pandoc.marcpartensky.com
- https://paperless.marcpartensky.com
- https://peertube.marcpartensky.com
- https://pgadmin.marcpartensky.com
- https://pgweb.marcpartensky.com
- https://docker.marcpartensky.com
- https://printer.marcpartensky.com
- https://torrent.marcpartensky.com
- https://rancher.marcpartensky.com
- https://cv.marcpartensky.com
- https://serge.marcpartensky.com
- https://syncthing.marcpartensky.com
- https://traefik.marcpartensky.com
- https://vault.marcpartensky.com
- https://terminal.marcpartensky.com
- https://webshot.marcpartensky.com
- https://marcpartensky.com
- https://wger.marcpartensky.com
- https://wss.marcpartensky.com
- https://yt.marcpartensky.com
<!-- - https://dns.marcpartensky.com -->
<!-- - https://glou.marcpartensky.com -->
<!-- - https://minecraft.marcpartensky.com -->
@@ -29,10 +61,38 @@ The `docker-compose.yml` configuration is compatible with the following reverse-
- caddy
- nginx
## Deploy the stack
## Run few services at once
- Example : run a monero node
```sh
docker-compose -f services/monero-node.yml up -d
```
docker stack deploy -c vps.yml vps
- Example : run multiple a wordpress website behind a proxy
```sh
# create a global network
docker network create --attachable caddy # add '--driver overlay' for swarm
# then deploy both services
docker-compose -f services/caddy.yml -f services/wordpress.yml up -d
```
## Deploy lots of services at once
- Select your services by putting those in ./env/vps.txt
```sh
nvim ./env/vps.txt
```
- Generate a ./stack/docker-compose.yml with all merged configurations
```sh
./bin/docker-setup.sh merge vps # or make merge
```
- Deploy
```sh
# as a swarm stack
docker stack deploy -c ./stack/docker-compose.yml vps # or make mswarm
# or using docker-compose
docker-compose -f ./stacks/docker-compose.yml up -d
```
### Links
+11 -8
View File
@@ -5,10 +5,13 @@ export COMPOSE_PATH_SEPARATOR=":"
export COMPOSE_FILE=$(find $PROJECT_PATH/services/*.yml | xargs -I @ echo -n @:)
export COMPOSE_FILE=${COMPOSE_FILE::-1}
# tool=podman-compose
tool=docker-compose
if [ "$1" = "-f" ]
then
docker-compose --file $@
$tool --file $@
exit
fi
@@ -16,10 +19,10 @@ if [ -f $PWD/docker-compose.yml ]
then
if [ "$#" = 0 ]
then
docker-compose ps
$tool ps
exit
fi
docker-compose --file $PWD/docker-compose.yml $@
$tool --file $PWD/docker-compose.yml $@
exit
fi
@@ -29,19 +32,19 @@ then
exit
fi
docker-compose $@
$tool $@
if [ "$1" = "up" ]
then
if [ "$2" = "-d" ]
then
docker-compose logs -f ${@: 3}
$tool logs -f ${@: 3}
else
docker-compose logs -f ${@: 2}
$tool logs -f ${@: 2}
fi
elif [ "$1" = "start" ]
then
docker-compose logs -f ${@: 2}
$tool logs -f ${@: 2}
elif [ "$1" = "restart" ]
then
docker-compose logs -f ${@: 2}
$tool logs -f ${@: 2}
fi
+5 -2
View File
@@ -1,8 +1,11 @@
#!/bin/sh
# tool=podman-compose
tool="docker compose"
if [ $1 = merge ]
then
cat ./env/$2.txt | xargs -I @ echo ./services/@.yml | xargs ./bin/merge.py > ./stacks/docker-compose.yml
cat ./env/$2.txt | xargs -I @ echo ./services/@.yml | xargs ./bin/docker-merge.py > ./stacks/docker-compose.yml
# export COMPOSE_FILE="$PWD/../docker-compose.yml"
exit
fi
@@ -26,7 +29,7 @@ config_files() {
if [ -z $STACK ]
then
cmd="docker compose $(config_files) up -d"
cmd="$tool $(config_files) up -d --force-recreate"
else
cmd="docker stack deploy $(config_files) $STACK"
fi
+196
View File
@@ -0,0 +1,196 @@
http:
pprof:
port: 6060
enabled: false
address: 0.0.0.0:3000
session_ttl: 720h
users:
- name: marc
password: $2a$10$E9cknJr/bTLtSUJ9EaW8r.Gw30FX8Plm8jgq.LaYxMwiX4DEuDK7O
auth_attempts: 5
block_auth_min: 15
http_proxy: ""
language: ""
theme: auto
dns:
bind_hosts:
- 0.0.0.0
port: 53
anonymize_client_ip: false
ratelimit: 20
ratelimit_subnet_len_ipv4: 24
ratelimit_subnet_len_ipv6: 56
ratelimit_whitelist: []
refuse_any: true
upstream_dns:
- https://dns10.quad9.net/dns-query
upstream_dns_file: ""
bootstrap_dns:
- 9.9.9.10
- 149.112.112.10
- 2620:fe::10
- 2620:fe::fe:10
fallback_dns: []
upstream_mode: load_balance
fastest_timeout: 1s
allowed_clients: []
disallowed_clients: []
blocked_hosts:
- version.bind
- id.server
- hostname.bind
trusted_proxies:
- 127.0.0.0/8
- ::1/128
cache_size: 4194304
cache_ttl_min: 0
cache_ttl_max: 0
cache_optimistic: false
bogus_nxdomain: []
aaaa_disabled: false
enable_dnssec: false
edns_client_subnet:
custom_ip: ""
enabled: false
use_custom: false
max_goroutines: 300
handle_ddr: true
ipset: []
ipset_file: ""
bootstrap_prefer_ipv6: false
upstream_timeout: 10s
private_networks: []
use_private_ptr_resolvers: true
local_ptr_upstreams: []
use_dns64: false
dns64_prefixes: []
serve_http3: false
use_http3_upstreams: false
serve_plain_dns: true
hostsfile_enabled: true
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
port_dns_over_quic: 853
port_dnscrypt: 0
dnscrypt_config_file: ""
allow_unencrypted_doh: false
certificate_chain: ""
private_key: ""
certificate_path: ""
private_key_path: ""
strict_sni_check: false
querylog:
dir_path: ""
ignored: []
interval: 2160h
size_memory: 1000
enabled: true
file_enabled: true
statistics:
dir_path: ""
ignored: []
interval: 24h
enabled: true
filters:
- enabled: true
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
name: AdGuard DNS filter
id: 1
- enabled: true
url: https://adaway.org/hosts.txt
name: AdAway Default Blocklist
id: 2
- enabled: true
url: https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
name: WindowsSpyBlocker - Hosts spy rules
id: 1668812860
- enabled: true
url: https://malware-filter.gitlab.io/malware-filter/phishing-filter-agh.txt
name: Phishing URL Blocklist (PhishTank and OpenPhish)
id: 1668812861
- enabled: true
url: https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV-AGH.txt
name: Perflyst and Dandelion Sprout's Smart-TV Blocklist
id: 1668812862
- enabled: true
url: https://raw.githubusercontent.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites/master/hosts
name: The Big List of Hacked Malware Web Sites
id: 1668812863
whitelist_filters: []
user_rules: []
dhcp:
enabled: false
interface_name: ""
local_domain_name: lan
dhcpv4:
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
options: []
dhcpv6:
range_start: ""
lease_duration: 86400
ra_slaac_only: false
ra_allow_slaac: false
filtering:
blocking_ipv4: ""
blocking_ipv6: ""
blocked_services:
schedule:
time_zone: UTC
ids: []
protection_disabled_until: null
safe_search:
enabled: false
bing: true
duckduckgo: true
google: true
pixabay: true
yandex: true
youtube: true
blocking_mode: default
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
rewrites:
- domain: medium.com
answer: 0.0.0.0
- domain: marc
answer: marcpartensky.com
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
filters_update_interval: 24
blocked_response_ttl: 10
filtering_enabled: true
parental_enabled: false
safebrowsing_enabled: false
protection_enabled: true
clients:
runtime_sources:
whois: true
arp: true
rdns: true
dhcp: true
hosts: true
persistent: []
log:
file: ""
max_backups: 0
max_size: 100
max_age: 3
compress: false
local_time: false
verbose: false
os:
group: ""
user: ""
rlimit_nofile: 0
schema_version: 28
+156
View File
@@ -0,0 +1,156 @@
# Minimal nginx configuration for AppFlowy-Cloud
# Self Hosted AppFlowy Cloud user should alter this file to suit their needs
events {
worker_connections 1024;
}
http {
# docker dns resolver
resolver 127.0.0.11 valid=10s;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 8080;
# https://github.com/nginxinc/nginx-prometheus-exporter
location = /stub_status {
stub_status;
}
}
server {
# ssl_certificate /etc/nginx/ssl/certificate.crt;
#ssl_certificate_key /etc/nginx/ssl/private_key.key;
listen 80;
listen 443 ssl;
client_max_body_size 10M;
underscores_in_headers on;
# GoTrue
location /gotrue/ {
set $gotrue gotrue;
proxy_pass http://$gotrue:9999;
rewrite ^/gotrue(/.*)$ $1 break;
# Allow headers like redirect_to to be handed over to the gotrue
# for correct redirecting
proxy_set_header Host $http_host;
proxy_pass_request_headers on;
}
# WebSocket
location /ws {
set $appflowy_cloud appflowy_cloud;
proxy_pass http://$appflowy_cloud:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
# AppFlowy-Cloud
# created a separate location block for handling CORS preflight (OPTIONS) requests specifically for the /api endpoint.
location = /api/options {
if ($http_origin ~* (http://127.0.0.1:8000)) {
add_header 'Access-Control-Allow-Origin' $http_origin;
}
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, Accept, Client-Version';
add_header 'Access-Control-Max-Age' 3600;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
location /api {
set $appflowy_cloud appflowy_cloud;
proxy_pass http://$appflowy_cloud:8000;
proxy_set_header X-Request-Id $request_id;
proxy_set_header Host $http_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;
# Set CORS headers for other requests
if ($http_origin ~* (http://127.0.0.1:8000)) {
add_header 'Access-Control-Allow-Origin' $http_origin always;
}
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, Accept, Client-Version' always;
add_header 'Access-Control-Max-Age' 3600 always;
}
# Minio Web UI
# Derive from: https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html
# Optional Module, comment this section if you are did not deploy minio in docker-compose.yml
location /minio/ {
set $minio minio;
proxy_pass http://$minio:9001;
rewrite ^/minio/(.*) /$1 break;
proxy_set_header Host $http_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-NginX-Proxy true;
## This is necessary to pass the correct IP to be hashed
real_ip_header X-Real-IP;
proxy_connect_timeout 300;
## To support websockets in MinIO versions released after January 2023
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
# Uncomment the following line to set the Origin request to an empty string
# proxy_set_header Origin '';
chunked_transfer_encoding off;
}
# PgAdmin
# Optional Module, comment this section if you are did not deploy pgadmin in docker-compose.yml
location /pgadmin/ {
set $pgadmin pgadmin;
proxy_pass http://$pgadmin:80;
proxy_set_header X-Script-Name /pgadmin;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $host;
proxy_redirect off;
}
# Portainer
# Optional Module, comment this section if you are did not deploy portainer in docker-compose.yml
location /portainer/ {
set $portainer portainer;
proxy_pass http://$portainer:9000;
rewrite ^/portainer/(.*) /$1 break;
}
# Admin Frontend
# Optional Module, comment this section if you are did not deploy admin_frontend in docker-compose.yml
location / {
set $admin_frontend admin_frontend;
proxy_pass http://$admin_frontend:3000;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $host;
}
}
}
+20 -6
View File
@@ -1,15 +1,29 @@
# first caddyfile
test.marcpartensky.com {
redir https://caddyserver.com/docs/caddyfile/patterns
{
security {
authorization policy marc {
set auth url https://gate.marcpartensky.com/
crypto key verify {env.JWT_SECRET}
allow roles authp/admin authp/user
}
}
}
authent.marcpartensky.com {
reverse_proxy authentik:9443 {
tls internal
}
marc.wf {
redir https://marcpartensky.com/{uri}
}
marc.tf {
redir https://marcpartensky.com{uri}
}
# authent.marcpartensky.com {
# reverse_proxy authentik:9443 {
# tls internal
# }
# }
# healthcheck
# :8080 {
# status 200 /
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-173
View File
@@ -1,173 +0,0 @@
# vim:ft=yaml
## TLS ##
# {% if not SYNAPSE_NO_TLS %}
# tls_certificate_path: "/data/{{ SYNAPSE_SERVER_NAME }}.tls.crt"
# tls_private_key_path: "/data/{{ SYNAPSE_SERVER_NAME }}.tls.key"
# {% endif %}
## Server ##
server_name: "matrix.marcpartensky.com"
pid_file: /homeserver.pid
web_client: False
soft_file_limit: 0
# log_config: "{{ SYNAPSE_LOG_CONFIG }}"
## Ports ##
listeners:
# Allow configuring in case we want to reverse proxy 8008
# using another process in the same container
- port: 8008
tls: false
bind_addresses: ['::']
type: http
x_forwarded: false
resources:
- names: [client]
compress: true
- names: [federation]
compress: false
## Database ##
# {% if POSTGRES_PASSWORD %}
# database:
# name: "psycopg2"
# args:
# user: "{{ POSTGRES_USER or "synapse" }}"
# password: "{{ POSTGRES_PASSWORD }}"
# database: "{{ POSTGRES_DB or "synapse" }}"
# host: "{{ POSTGRES_HOST or "db" }}"
# port: "{{ POSTGRES_PORT or "5432" }}"
# cp_min: 5
# cp_max: 10
# {% else %}
# database:
# name: "sqlite3"
# args:
# database: "/data/homeserver.db"
# {% endif %}
## Performance ##
event_cache_size: "10K"
## Ratelimiting ##
rc_messages_per_second: 0.2
rc_message_burst_count: 10.0
federation_rc_window_size: 1000
federation_rc_sleep_limit: 10
federation_rc_sleep_delay: 500
federation_rc_reject_limit: 50
federation_rc_concurrent: 3
## Files ##
media_store_path: "/data/media"
max_upload_size: "50M"
max_image_pixels: "32M"
dynamic_thumbnails: false
# List of thumbnail to precalculate when an image is uploaded.
thumbnail_sizes:
- width: 32
height: 32
method: crop
- width: 96
height: 96
method: crop
- width: 320
height: 240
method: scale
- width: 640
height: 480
method: scale
- width: 800
height: 600
method: scale
url_preview_enabled: False
max_spider_size: "10M"
## Captcha ##
# {% if SYNAPSE_RECAPTCHA_PUBLIC_KEY %}
# recaptcha_public_key: "{{ SYNAPSE_RECAPTCHA_PUBLIC_KEY }}"
# recaptcha_private_key: "{{ SYNAPSE_RECAPTCHA_PRIVATE_KEY }}"
# enable_registration_captcha: True
# recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify"
# {% else %}
# recaptcha_public_key: "YOUR_PUBLIC_KEY"
# recaptcha_private_key: "YOUR_PRIVATE_KEY"
enable_registration_captcha: False
recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify"
# {% endif %}
## Turn ##
# {% if SYNAPSE_TURN_URIS %}
# turn_uris:
# {% for uri in SYNAPSE_TURN_URIS.split(',') %} - "{{ uri }}"
# {% endfor %}
# turn_shared_secret: "{{ SYNAPSE_TURN_SECRET }}"
# turn_user_lifetime: "1h"
# turn_allow_guests: True
# {% else %}
turn_uris: []
turn_shared_secret: "marcsecret"
turn_user_lifetime: "1h"
turn_allow_guests: True
# {% endif %}
## Registration ##
enable_registration: "True"
registration_shared_secret: "marcregistrationsecret"
bcrypt_rounds: 12
allow_guest_access: "True"
enable_group_creation: true
## Metrics ###
# {% if SYNAPSE_REPORT_STATS.lower() == "yes" %}
# enable_metrics: True
# report_stats: True
# {% else %}
enable_metrics: False
report_stats: False
# {% endif %}
## API Configuration ##
# {% if SYNAPSE_APPSERVICES %}
app_service_config_files:
- "discord-registration.yaml"
# {% for appservice in SYNAPSE_APPSERVICES %} - "{{ appservice }}"
# {% endfor %}
# {% endif %}
macaroon_secret_key: "marcmacaronsecret"
expire_access_token: False
## Signing Keys ##
# signing_key_path: "/data/matrix.marcpartensky.com.signing.key"
old_signing_keys: {}
key_refresh_interval: "1d" # 1 Day.
# The trusted servers to download signing keys from.
trusted_key_servers:
- server_name: matrix.org
verify_keys:
"ed25519:auto": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw"
password_config:
enabled: true
+35
View File
@@ -0,0 +1,35 @@
[ req ]
default_bits = 8192
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
dirstring_type = nobmp
[ req_distinguished_name ]
countryName = FR
countryName_default = FR
countryName_min = 2
countryName_max = 2
localityName = Europe/Paris
organizationalUnitName = Marc Partensky Corp
commonName = Marc Partensky
commonName_max = 64
emailAddress = marc@marcpartensky.com
emailAddress_max = 40
# [ req_attributes ]
# challengePassword = A challenge password
# challengePassword_min = 4
# challengePassword_max = 20
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
+40
View File
@@ -0,0 +1,40 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Dnsmasq config for Pi-hole's FTLDNS
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
###############################################################################
# FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
# #
# IF YOU WISH TO CHANGE THE UPSTREAM SERVERS, CHANGE THEM IN: #
# /etc/pihole/setupVars.conf #
# #
# ANY OTHER CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE #
# WITHIN /etc/dnsmasq.d/yourname.conf #
###############################################################################
addn-hosts=/etc/pihole/local.list
addn-hosts=/etc/pihole/custom.list
localise-queries
no-resolv
cache-size=10000
log-queries
log-facility=/var/log/pihole.log
log-async
server=8.8.8.8
server=8.8.4.4
interface=eth0
+42
View File
@@ -0,0 +1,42 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2021 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# RFC 6761 config file for Pi-hole
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
###############################################################################
# FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
# #
# CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE #
# WITHIN /etc/dnsmasq.d/yourname.conf #
###############################################################################
# RFC 6761: Caching DNS servers SHOULD recognize
# test, localhost, invalid
# names as special and SHOULD NOT attempt to look up NS records for them, or
# otherwise query authoritative DNS servers in an attempt to resolve these
# names.
server=/test/
server=/localhost/
server=/invalid/
# The same RFC requests something similar for
# 10.in-addr.arpa. 21.172.in-addr.arpa. 27.172.in-addr.arpa.
# 16.172.in-addr.arpa. 22.172.in-addr.arpa. 28.172.in-addr.arpa.
# 17.172.in-addr.arpa. 23.172.in-addr.arpa. 29.172.in-addr.arpa.
# 18.172.in-addr.arpa. 24.172.in-addr.arpa. 30.172.in-addr.arpa.
# 19.172.in-addr.arpa. 25.172.in-addr.arpa. 31.172.in-addr.arpa.
# 20.172.in-addr.arpa. 26.172.in-addr.arpa. 168.192.in-addr.arpa.
# Pi-hole implements this via the dnsmasq option "bogus-priv" (see
# 01-pihole.conf) because this also covers IPv6.
# OpenWRT furthermore blocks bind, local, onion domains
# see https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=package/network/services/dnsmasq/files/rfc6761.conf;hb=HEAD
# and https://www.iana.org/assignments/special-use-domain-names/special-use-domain-names.xhtml
# We do not include the ".local" rule ourselves, see https://github.com/pi-hole/pi-hole/pull/4282#discussion_r689112972
server=/bind/
server=/onion/
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
set -e
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER marc PASSWORD ZGQ4ZDk5OWEwYjNlMDJlNmQ5NmE1NjM5;
GRANT ALL PRIVILEGES ON DATABASE * TO marc;
EOSQL
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh
cd /var/lib/postgresql/certs
# private key and certificate from it
openssl req -new -text -newkey rsa:8192 -passout pass:$POSTGRES_PASSWORD -subj /CN=localhost -out server.req -keyout privkey.pem
# self signed root certificate
openssl rsa -in privkey.pem -passin pass:$POSTGRES_PASSWORD -out server.key
# derived certificate
openssl req -x509 -in server.req -text -key server.key -out server.crt
# change permissions to the root certificate for postgres
chmod 600 server.key
chown postgres:postgres server.key
+7 -3
View File
@@ -11,9 +11,13 @@ global:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- targets: ['node-exporter:9100']
- job_name: cadvisor
scrape_interval: 5s
static_configs:
- targets:
- cadvisor:8080
+628
View File
@@ -0,0 +1,628 @@
http:
# middlewares:
# basic:
# basicAuth:
# users:
# - test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
# # usersFile: etc/traefik/.htpasswd
services:
pgadmin:
loadBalancer:
servers:
- url: http://pgadmin:80
jellyfin:
loadBalancer:
servers:
- url: http://jellyfin:8096
portainer:
loadBalancer:
servers:
- url: http://portainer:9000
dbdesigner:
loadBalancer:
servers:
- url: http://dbdesigner:3000
etherpad:
loadBalancer:
servers:
- url: http://etherpad:9001
mongo:
loadBalancer:
servers:
- url: http://mongo:8081
resume:
loadBalancer:
servers:
- url: http://resume:3000
printer:
loadBalancer:
servers:
- url: http://resume:3000
mailu:
loadBalancer:
servers:
- url: http://mailu:80
yt-dlp-webui:
loadBalancer:
servers:
- url: http://yt-dlp-webui:80
wger-nginx:
loadBalancer:
servers:
- url: http://wger:80
web-terminal:
loadBalancer:
servers:
- url: http://web-terminal:7681
homer:
loadBalancer:
servers:
- url: http://homer:8080
pandoc:
loadBalancer:
servers:
- url: http://pandoc:80
jupyterlab:
loadBalancer:
servers:
- url: http://jupyterlab:8888
gitlab:
loadBalancer:
servers:
- url: http://gitlab:80
serge:
loadBalancer:
servers:
- url: http://serge:8008
arch:
loadBalancer:
servers:
- url: http://arch:8080
gitea:
loadBalancer:
servers:
- url: http://gitea:3000
# heimdall:
# loadBalancer:
# servers:
# - url: http://heimdall:80
pgweb:
loadBalancer:
servers:
- url: http://pgweb:8081
paperless:
loadBalancer:
servers:
- url: http://paperless:8000
jenkins:
loadBalancer:
servers:
- url: http://jenkins:8080
rancher:
loadBalancer:
servers:
- url: http://rancher:80
docuseal:
loadBalancer:
servers:
- url: http://docuseal:3000
grafana:
loadBalancer:
servers:
- url: http://grafana:3000
peertube:
loadBalancer:
servers:
- url: http://peertube:9000
mcmyadmin:
loadBalancer:
servers:
- url: http://mcmyadmin:8080
qbittorrent:
loadBalancer:
servers:
- url: http://qbittorrent:8080
dockge:
loadBalancer:
servers:
- url: http://dockge:5001
webshot:
loadBalancer:
servers:
- url: http://webshot:3000
routers:
pgadmin:
rule: "Host(`pgadmin.marcpartensky.com`)"
service: pgadmin
entryPoints: ["web"]
middlewares: ["sablier-pgadmin@file"]
jellyfin:
rule: "Host(`jellyfin.marcpartensky.com`)"
service: jellyfin
entryPoints: ["web"]
middlewares: ["sablier-jellyfin@file"]
portainer:
rule: "Host(`docker.marcpartensky.com`)"
service: portainer
entryPoints: ["web"]
middlewares: ["sablier-portainer@file"]
dbdesigner:
rule: "Host(`dbdesigner.marcpartensky.com`)"
service: dbdesigner
entryPoints: ["web"]
middlewares: ["sablier-dbdesigner@file"]
etherpad:
rule: "Host(`pad.marcpartensky.com`)"
service: etherpad
entryPoints: ["web"]
middlewares: ["sablier-etherpad@file"]
mongo:
rule: "Host(`mongo.marcpartensky.com`)"
service: mongo-express
entryPoints: ["web"]
middlewares: ["sablier-mongo@file"]
resume:
rule: "Host(`cv.marcpartensky.com`)"
service: resume
entryPoints: ["web"]
middlewares: ["sablier-resume@file"]
printer:
rule: "Host(`printer.marcpartensky.com`)"
service: resume
entryPoints: ["web"]
middlewares: ["sablier-resume@file"]
mailu:
rule: "Host(`mail.marcpartensky.com`)"
service: mailu
entryPoints: ["web"]
middlewares: ["sablier-mailu@file"]
yt-dlp-webui:
rule: "Host(`yt.marcpartensky.com`)"
service: yt-dlp-webui
entryPoints: ["web"]
middlewares: ["sablier-yt-dlp-webui@file"]
wger:
rule: "Host(`wger.marcpartensky.com`)"
service: wger-nginx
entryPoints: ["web"]
middlewares: ["sablier-wger@file"]
web-terminal:
rule: "Host(`terminal.marcpartensky.com`)"
service: web-terminal
entryPoints: ["web"]
middlewares: ["sablier-web-terminal@file", "ldap_auth@docker"]
homer:
rule: "Host(`homer.marcpartensky.com`)"
service: homer
entryPoints: ["web"]
middlewares: ["sablier-homer@file"]
pandoc:
rule: "Host(`pandoc.marcpartensky.com`)"
service: pandoc
entryPoints: ["web"]
middlewares: ["sablier-pandoc@file"]
jupyterlab:
rule: "Host(`jupyterlab.marcpartensky.com`)"
service: jupyterlab
entryPoints: ["web"]
middlewares: ["sablier-jupyterlab@file"]
gitlab:
rule: "Host(`gitlab.marcpartensky.com`)"
service: gitlab
entryPoints: ["web"]
middlewares: ["sablier-gitlab@file"]
serge:
rule: "Host(`serge.marcpartensky.com`)"
service: serge
entryPoints: ["web"]
middlewares: ["sablier-serge@file"]
arch:
rule: "Host(`arch.marcpartensky.com`)"
service: arch
entryPoints: ["web"]
middlewares: ["sablier-arch@file"]
gitea:
rule: "Host(`git.marcpartensky.com`)"
service: gitea
entryPoints: ["web"]
middlewares: ["sablier-gitea@file"]
# heimdall:
# rule: "Host(`heimdall.marcpartensky.com`)"
# service: heimdall
# entryPoints: ["web"]
# middlewares: ["sablier-heimdall@file"]
pgweb:
rule: "Host(`pgweb.marcpartensky.com`)"
service: pgweb
entryPoints: ["web"]
middlewares: ["sablier-pgweb@file", "ldap_auth@docker"]
paperless:
rule: "Host(`paperless.marcpartensky.com`)"
service: paperless
entryPoints: ["web"]
middlewares: ["sablier-paperless@file"]
jenkins:
rule: "Host(`jenkins.marcpartensky.com`)"
service: jenkins
entryPoints: ["web"]
middlewares: ["sablier-jenkins@file"]
rancher:
rule: "Host(`rancher.marcpartensky.com`)"
service: rancher
entryPoints: ["web"]
middlewares: ["sablier-rancher@file"]
docuseal:
rule: "Host(`docuseal.marcpartensky.com`)"
service: docuseal
entryPoints: ["web"]
middlewares: ["sablier-docuseal@file"]
grafana:
rule: "Host(`grafana.marcpartensky.com`)"
service: grafana
entryPoints: ["web"]
middlewares: ["sablier-grafana@file"]
peertube:
rule: "Host(`peertube.marcpartensky.com`)"
service: peertube
entryPoints: ["web"]
middlewares: ["sablier-peertube@file"]
mcmyadmin:
rule: "Host(`mcmyadmin.marcpartensky.com`)"
service: mcmyadmin
entryPoints: ["web"]
middlewares: ["sablier-mcmyadmin@file"]
qbittorrent:
rule: "Host(`torrent.marcpartensky.com`)"
service: qbittorrent
entryPoints: ["web"]
middlewares: ["sablier-qbittorrent@file", "ldap_auth@docker"]
dockge:
rule: "Host(`dockge.marcpartensky.com`)"
service: dockge
entryPoints: ["web"]
middlewares: ["sablier-dockge@file", "ldap_auth@docker"]
webshot:
rule: "Host(`webshot.marcpartensky.com`)"
service: webshot
entryPoints: ["web"]
middlewares: ["sablier-webshot@file", "ldap_auth@docker"]
middlewares:
cloudflarewarp:
plugin:
cloudflarewarp:
disableDefault: false
trustip: # Trust IPS not required if disableDefault is false - we will allocate Cloud Flare IPs automatically
- "2400:cb00::/32"
sablier-pgadmin:
plugin:
sablier:
sablierUrl: http://sablier:10000
sessionDuration: 5m
names: pgadmin
dynamic:
displayName: pgAdmin
refreshFrequency: 5s
showDetails: true
theme: ghost
sablier-jellyfin:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: jellyfin
sessionDuration: 5m
dynamic:
# showDetails: true
displayName: Jellyfin
refreshFrequency: 5s
theme: shuffle
sablier-portainer:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: portainer,portainer-agent
sessionDuration: 1m
dynamic:
displayName: Portainer
showDetails: true
theme: shuffle
sablier-dbdesigner:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: dbdesigner
sessionDuration: 5m
dynamic:
displayName: dbDesigner
showDetails: true
theme: ghost
refreshFrequency: 1s
sablier-etherpad:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: etherpad
sessionDuration: 5m
dynamic:
displayName: Etherpad
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-mongo:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: mongo-express
sessionDuration: 5m
dynamic:
displayName: Mongo Express
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-resume:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: resume,printer
sessionDuration: 5m
dynamic:
displayName: Reactive Resume
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-mailu:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: mailu,mailu-resolver,mailu-admin,mailu-imap,mailu-smtp,mailu-oletools,mailu-antispam,mailu-webdav,mailu-fetchmail
sessionDuration: 5m
dynamic:
displayName: Mailu
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-yt-dlp-webui:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: yt-dlp-webui
sessionDuration: 5m
dynamic:
displayName: yt-dlp WebUI
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-wger:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: wger,wger-nginx,wger-celery,wger-celery-beat
sessionDuration: 5m
dynamic:
displayName: yt-dlp WebUI
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-web-terminal:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: web-terminal
sessionDuration: 5m
dynamic:
displayName: Web Terminal
showDetails: true
theme: matrix
refreshFrequency: 1s
sablier-homer:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: homer
sessionDuration: 5m
dynamic:
displayName: Homer
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-pandoc:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: pandoc
sessionDuration: 5m
dynamic:
displayName: Pandoc
showDetails: true
# theme: hacker-terminal
refreshFrequency: 1s
sablier-jupyterlab:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: jupyterlab
sessionDuration: 5m
dynamic:
displayName: Jupyter Lab
showDetails: true
theme: matrix
refreshFrequency: 1s
sablier-gitlab:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: gitlab,gitlab-runner
sessionDuration: 5m
dynamic:
displayName: Gitlab
showDetails: true
theme: matrix
refreshFrequency: 5s
sablier-serge:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: serge
sessionDuration: 5m
dynamic:
displayName: Serge
showDetails: true
theme: matrix
refreshFrequency: 5s
sablier-arch:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: arch
sessionDuration: 5m
dynamic:
displayName: Arch Linux VNC
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-gitea:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: gitea
sessionDuration: 5m
dynamic:
displayName: Gitea
showDetails: true
theme: ghost
refreshFrequency: 5s
# sablier-heimdall:
# plugin:
# sablier:
# sablierUrl: http://sablier:10000
# names: heimdall
# sessionDuration: 5m
# dynamic:
# displayName: Heimdall
# showDetails: true
# theme: ghost
# refreshFrequency: 5s
sablier-pgweb:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: pgweb
sessionDuration: 5m
dynamic:
displayName: PG Web
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-paperless:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: paperless
sessionDuration: 2m
dynamic:
displayName: Paperless
showDetails: true
theme: hacker-matrix
refreshFrequency: 5s
sablier-jenkins:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: jenkins
sessionDuration: 2m
dynamic:
displayName: Jenkins
showDetails: true
theme: matrix
refreshFrequency: 5s
sablier-rancher:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: rancher
sessionDuration: 2m
dynamic:
displayName: Rancher
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-docuseal:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: docuseal
sessionDuration: 2m
dynamic:
displayName: Docuseal
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-grafana:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: grafana
sessionDuration: 2m
dynamic:
displayName: Grafana
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-peertube:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: peertube
sessionDuration: 2m
dynamic:
displayName: Peertube
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-mcmyadmin:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: mcmyadmin
sessionDuration: 2m
dynamic:
displayName: McMyAdmin
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-qbittorrent:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: qbittorrent
sessionDuration: 2m
dynamic:
displayName: Qbittorrent
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-dockge:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: dockge
sessionDuration: 2m
dynamic:
displayName: Dockge
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-webshot:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: webshot
sessionDuration: 2m
dynamic:
displayName: Webshot
showDetails: true
theme: ghost
refreshFrequency: 5s
+105
View File
@@ -0,0 +1,105 @@
# https://doc.traefik.io/traefik/routing/overview/
global:
checkNewVersion: true
sendAnonymousUsage: false
api:
# insecure: false # = secure
insecure: true
dashboard: true
# debug: true
debug: false
providers:
docker:
# swarmMode: false
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false # traefik enabled containers only
network: caddy
file:
filename: /etc/traefik/dynamic.yml
watch: true
serversTransport: # enable ssl backend
insecureSkipVerify: true
certificatesResolvers:
# https://community.traefik.io/t/help-with-multiple-certificate-resolvers/15134
tls:
acme:
tlsChallenge: {}
email: marc.partensky@gmail.com
storage: /config/acme.json
cloudflare:
acme:
email: marc.partensky@gmail.com
storage: /config/acme.json
dnsChallenge:
provider: cloudflare
resolvers:
- "1.1.1.1:53"
ping: {} # mandatory for healthcheck
log:
level: debug
# level: error
entryPoints:
websecure:
address: ':443'
forwardedHeaders:
insecure: true
# http3:
# advertisedPort: 443
http:
tls:
certResolver: tls
# middlewares:
# - ldap
# http3:
# advertisedPort: 443
web:
address: ':80'
forwardedHeaders:
insecure: true
# forwardedHeaders:
# trustedIPs:
# - "127.0.0.1/32"
# - "192.168.1.7"
http:
redirections:
entryPoint:
# to: websecure
scheme: https
permanent: true
priority: 10
experimental:
# http3: true
plugins:
ldapAuth:
moduleName: github.com/wiltonsr/ldapAuth
# version: v0.0.19
version: v0.1.10
souin:
moduleName: github.com/darkweak/souin
version: v1.6.22
sablier:
moduleName: github.com/acouvreur/sablier
version: v1.0.0
cloudflarewarp:
modulename: github.com/BetterCorp/cloudflarewarp
version: v1.3.0
# ldap entreprise https://doc.traefik.io/traefik-enterprise/operations/static-configuration/
# authSources:
# ldapSource:
# ldap:
# url: ldaps://marcpartensky.com:636
# # url: ldap://ldap:389
# startTLS: true
# insecureSkipVerify: true
# bindDn: ""
# # bindDN: cn=marc,dc=marcpartensky,dc=com
# - --providers.docker.network=web # <== Operate on the docker network named web
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_TLSCHALLENGE=true
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_EMAIL=marc.partensky@gmail.com
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_STORAGE=/letsencrypt/acme.json # log settings (options: error, debug, panic, fatal, warn, info) - https://docs.traefik.io/observability/logs/ ##
## Provider Settings - https://docs.traefik.io/providers/docker/#provider-configuration ##
## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
+27
View File
@@ -0,0 +1,27 @@
upstream wger {
server wger:8000;
}
server {
listen 80;
location / {
proxy_pass http://wger;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_redirect off;
}
location /static/ {
alias /wger/static/;
}
location /media/ {
alias /wger/media/;
}
# Increase max body size to allow for video uploads
client_max_body_size 100M;
}
Vendored
+15 -8
View File
@@ -1,10 +1,17 @@
caddy
cloudflare
traefik
postgres
mongo
website
oxivia
servant
discord-bot
docker-api
ialab
registry
portainer
discord
authentik
nextcloud
vaultwarden
authentik
sablier
minio
resume
syncthing
wger
redis
terminal
+52
View File
@@ -0,0 +1,52 @@
version: "3.9"
services:
adguard:
image: adguard/adguardhome
restart: unless-stopped
ports:
- 53:53/tcp
- 53:53/udp
# - 67:67/udp
# - 68:68/udp # adguard home as dhcp
# - 80:80/tcp # https/dns-over-https
# - 443:443/tcp
# - 443:443/udp
# - 3000:3000/tcp # adguard home's admin
# - 853:853/tcp # dns-over-tls
# - 784:784/udp # dns-over-quic
# - 853:853/udp
# - 8853:8853/udp
# - 5443:5443/tcp # dnscrypt server
# - 5443:5443/udp
volumes:
- adguard:/opt/adguardhome/work
- ../data/adguard:/opt/adguardhome/conf
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.adguard.rule: >
Host(`adguard.marcpartensky.com`)
traefik.http.routers.adguard.entrypoints: web
# traefik.http.routers.adguard.tls.certresolver: cloudflare
traefik.http.services.adguard.loadbalancer.server.port: 3000
traefik.http.routers.adguard.middlewares: ldap_auth
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.adguard.rule: >
# Host(`adguard.marcpartensky.com`) ||
# Host(`adguard.marcpartensky.fr`)
# traefik.http.routers.adguard.entrypoints: websecure
# traefik.http.routers.adguard.tls.certresolver: cloudflare
# traefik.http.services.adguard.loadbalancer.server.port: 3000
# traefik.http.routers.adguard.middlewares: ldap_auth
volumes:
adguard:
networks:
caddy:
external: true
+19
View File
@@ -0,0 +1,19 @@
version: "3.9"
services:
agenda_militant:
image: marcpartensky/agenda-militant
restart: unless-stopped
networks:
- caddy
deploy:
labels:
caddy: agenda.militant.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.agenda_militant.rule: Host(`agenda.militant.marcpartensky.com`)
traefik.http.routers.agenda_militant.entrypoints: websecure
traefik.http.routers.agenda_militant.tls.certresolver: tls
traefik.http.services.agenda_militant.loadbalancer.server.port: 8080
networks:
caddy:
external: true
+24
View File
@@ -0,0 +1,24 @@
services:
alpine:
image: docker.io/marcpartensky/alpine:vnc
restart: unless-stopped
volumes:
- /srv/alpine:/home/marc/data
env_file:
- ../data/secrets/alpine.env
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.alpine.rule: >
Host(`alpine.marcpartensky.com`)
traefik.http.routers.alpine.entrypoints: web
# traefik.http.routers.alpine.tls.certresolver: tls
traefik.http.services.alpine.loadbalancer.server.port: 6080
volumes:
data:
networks:
caddy:
external: true
+27
View File
@@ -0,0 +1,27 @@
version: "3.9"
services:
android:
image: budtmo/docker-android-x86-12.0
restart: unless-stopped
privileged: true
networks:
- caddy
ports:
# - "6080:6080"
- "5554:5554"
- "5555:5555"
- "4723:4723"
environment:
DEVICE: "Samsung Galaxy S6"
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.android.rule: >
Host(`android.marcpartensky.fr`)
traefik.http.routers.android.entrypoints: websecure
traefik.http.routers.android.tls.certresolver: cloudflare
traefik.http.services.android.loadbalancer.server.port: 6080
networks:
caddy:
external: true
+54
View File
@@ -0,0 +1,54 @@
# Essential services for AppFlowy Cloud
version: "3.9"
services:
appflowy-nginx:
restart: on-failure
image: nginx
# ports:
# - 80:80 # Disable this if you are using TLS
volumes:
- ../data/appflowy/nginx.conf:/etc/nginx/nginx.conf
# - ./nginx/ssl/certificate.crt:/etc/nginx/ssl/certificate.crt
# - ./nginx/ssl/private_key.key:/etc/nginx/ssl/private_key.key
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.services.appflowy.loadbalancer.server.port: 80
traefik.http.routers.appflowy.rule: >
Host(`appflowy.marcpartensky.com`)
traefik.http.routers.appflowy.entrypoints: web
# traefik.http.routers.appflowy.tls.certresolver: tls
traefik.http.routers.appflowy.middlewares: ldap_auth
gotrue:
image: appflowyinc/gotrue:${GOTRUE_VERSION:-latest}
restart: on-failure
networks:
- caddy
- postgres
env_file:
- ../data/secrets/appflowy.env
appflowy-cloud:
image: appflowyinc/appflowy_cloud:${BACKEND_VERSION:-latest}
restart: on-failure
env_file:
- ../data/secrets/appflowy.env
appflowy-admin:
restart: on-failure
image: appflowyinc/admin_frontend:${BACKEND_VERSION:-latest}
depends_on:
- gotrue
env_file:
- ../data/secrets/appflowy.env
networks:
caddy:
external: true
postgres:
external: true
redis:
external: true
+63
View File
@@ -0,0 +1,63 @@
version: "3.9"
services:
arch:
image: marcpartensky/arch:vnc
container_name: arch
restart: unless-stopped
ports: # vnc is shared
- "5900:5900"
networks:
- caddy
- ldap
volumes:
- arch:/home/marc
healthcheck:
test: curl --fail http://localhost:8080/ || exit 1
interval: 5m
timeout: 30s
retries: 3
start_period: 60s
# deploy:
# labels:
# caddy: arch.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 8080}}"
# traefik.enable: "true"
# traefik.http.routers.arch.rule: Host(`arch.marcpartensky.com`)
# traefik.http.routers.arch.entrypoints: websecure
# traefik.http.routers.arch.tls.certresolver: tls
# traefik.http.services.arch.loadbalancer.server.port: 8080
# traefik.http.routers.arch.middlewares: ldap_auth, sablier
#
# # sablier
# # The sablier URL service, must be reachable from the Traefik instance
# traefik.http.middlewares.sablier.plugin.sablierUrl: http://sablier:10000
# # Comma separated names of containers/services/deployments etc.
# traefik.http.middlewares.sablier.plugin.names: arch
# # The session duration after which containers/services/deployments instances are shutdown
# traefik.http.middlewares.sablier.plugin.sessionDuration: 1m
# # You can only use one strategy at a time
# # To do so, only declare `dynamic` or `blocking`
#
# # Dynamic strategy, provides the waiting webui
# # (Optional) Defaults to the middleware name
# traefik.http.middlewares.sablier.plugin.dynamic.displayName: Starting application
# # (Optional) Set to true or false to show details specifcally for this middleware, unset to use Sablier server defaults
# traefik.http.middlewares.sablier.plugin.dynamic.showDetails: "true"
# # (Optional) The theme to use
# traefik.http.middlewares.sablier.plugin.dynamic.theme: hacker-terminal
# # (Optional) The loading page refresh frequency
# traefik.http.middlewares.sablier.plugin.dynamic.refreshFrequency: 5s
#
# # Blocking strategy, waits until services are up and running
# # but will not wait more than `timeout`
# # blocking:
# # timeout: 1m
volumes:
arch:
networks:
ldap:
external: true
caddy:
external: true
+38
View File
@@ -0,0 +1,38 @@
services:
audiobookshelf:
image: advplyr/audiobookshelf:latest
restart: unless-stopped
volumes:
- /srv/audiobookshelf/config:/config
- /srv/audiobookshelf/audiobooks:/audiobooks
- /srv/audiobookshelf/podcasts:/podcasts
- /srv/audiobookshelf/metadata:/metadata
# env_file:
# - ../data/secrets/audiobookshelf.env # Fichier d'environnement optionnel
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.audiobookshelf.rule: >
Host(`audiobookshelf.marcpartensky.com`)
traefik.http.routers.audiobookshelf.entrypoints: web
# traefik.http.services.audiobookshelf.loadbalancer.server.port: 13378
traefik.http.services.audiobookshelf.loadbalancer.server.port: 80
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
environment:
- TZ=Europe/Paris # Remplace par ton fuseau horaire
- AUDIOBOOKSHELF_UID=1000 # UID pour l'utilisateur
- AUDIOBOOKSHELF_GID=1000 # GID pour le groupe
# volumes:
# config:
# audiobooks:
# podcasts:
networks:
caddy:
external: true
+52
View File
@@ -0,0 +1,52 @@
version: "3.9"
services:
authelia:
image: authelia/authelia
restart: unless-stopped
# expose:
# - 9091
env_file:
- ../data/secrets/authelia.env
environment:
TZ: France/Paris
volumes:
- ../data/authelia:/config
networks:
- caddy
- redis
- ldap
labels:
# caddy: authelia.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 9091}}"
traefik.enable: true
traefik.http.routers.authelia.rule: Host(`authelia.marcpartensky.com`)
traefik.http.routers.authelia.entrypoints: web
# traefik.http.routers.authelia.tls: true
# traefik.http.routers.authelia.tls.certresolver: tls
traefik.http.middlewares.authelia.forwardauth.address: http://authelia:9091/api/verify?rd=https://authelia.marcpartensky.com # yamllint disable-line rule:line-length
traefik.http.middlewares.authelia.forwardauth.trustForwardHeader: true
traefik.http.middlewares.authelia.forwardauth.authResponseHeaders: Remote-User,Remote-Groups,Remote-Name,Remote-Email # yamllint disable-line rule:line-length
# redis:
# image: redis:alpine
# restart: unless-stopped
# expose:
# - 6379
# environment:
# TZ: France/Paris
# volumes:
# - authelia_redis:/data
# networks:
# - authelia
# volumes:
# authelia_redis:
networks:
authelia:
caddy:
external: true
redis:
external: true
ldap:
external: true
+73 -52
View File
@@ -1,99 +1,120 @@
version: "3.9"
services:
authentik_postgres:
image: postgres:alpine
restart: unless-stopped
volumes:
- authentik_postgres:/var/lib/postgresql/data
env_file:
- ../data/secrets/authentik.env
networks:
- authentik
authentik_redis:
image: redis:alpine
restart: unless-stopped
networks:
- authentik
authentik:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
# image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
image: ghcr.io/goauthentik/server:2024.4.2
restart: unless-stopped
command: server
environment:
AUTHENTIK_REDIS__HOST: authentik_redis
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
AUTHENTIK_DEBUG: "true"
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: admin
# WORKERS: 2
volumes:
- authentik_media:/media
- authentik_templates:/templates
- authentik_geoip:/geoip
env_file:
- ../data/secrets/authentik.env
# ports:
# - "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
# - "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
depends_on:
- authentik_postgres
- authentik_redis
- authentik_worker
- caddy
volumes:
- authentik_media:/media
- templates:/templates
- geoip:/geoip
# depends_on:
# - postgres
# - redis
# - worker
networks:
- authentik
- caddy
- postgres
- redis
- ldap
labels:
caddy: authentik.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 9000}}"
# traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
traefik.enable: "true"
traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
traefik.http.routers.authentik.entrypoints: web
# traefik.http.routers.authentik.tls.certresolver: cloudflare
traefik.http.services.authentik.loadbalancer.server.port: 80
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.fr`)
# traefik.http.routers.authentik.entrypoints: websecure
# traefik.http.routers.authentik.tls.certresolver: cloudflare
# traefik.http.services.authentik.loadbalancer.server.port: 9000
authentik_worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
worker:
# image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
image: ghcr.io/goauthentik/server:2024.4.2
restart: unless-stopped
user: root
# user: root
command: worker
environment:
AUTHENTIK_REDIS__HOST: authentik_redis
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgres
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
# This is optional, and can be removed. If you remove this, the following will happen
# - The permissions for the /backups and /media folders aren't fixed, so make sure they are 1000:1000
# - The docker socket can't be accessed anymore
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- authentik_backups:/backups
- /srv/authentik:/backups
- authentik_media:/media
- authentik_certs:/certs
- authentik_templates:/templates
- authentik_geoip:/geoip
- certs:/certs
- templates:/templates
- geoip:/geoip
env_file:
- ../data/secrets/authentik.env
networks:
- authentik
- postgres
- redis
authentik_geoipupdate:
image: maxmindinc/geoipupdate:latest
# authentik_geoipupdate:
# image: maxmindinc/geoipupdate:latest
# restart: unless-stopped
# volumes:
# - authentik_geoip:/usr/share/GeoIP
# environment:
# GEOIPUPDATE_EDITION_IDS: "GeoLite2-City"
# GEOIPUPDATE_FREQUENCY: "8"
# # env_file:
# # - ../data/secrets/authentik.env
# networks:
# - authentik
# version: "3.5"
ldap:
image: ghcr.io/goauthentik/ldap
restart: unless-stopped
volumes:
- authentik_geoip:/usr/share/GeoIP
environment:
GEOIPUPDATE_EDITION_IDS: "GeoLite2-City"
GEOIPUPDATE_FREQUENCY: "8"
# env_file:
# - ../data/secrets/authentik.env
ports:
# - 389:389/tcp # no need to expose insecure port
- 0.0.0.0:636:636/tcp
networks:
- authentik
- authentik # connect to authentik server
- ldap # connect to other services
env_file:
- ../data/secrets/authentik.env
volumes:
authentik_postgres:
authentik_backups:
# backups:
postgres:
authentik_media:
authentik_certs:
authentik_templates:
authentik_geoip:
certs:
templates:
geoip:
networks:
authentik:
ldap:
external: true
redis:
external: true
postgres:
external: true
caddy:
external: true
+7
View File
@@ -0,0 +1,7 @@
services:
autodownloader:
image: marcpartensky/autodownloader
volumes:
- /srv/jellyfin/movies:/movies
env_file:
- ../data/secrets/autodownloader.env
+35
View File
@@ -0,0 +1,35 @@
version: "3.9"
services:
beef:
image: marcpartensky/beef
restart: unless-stopped
networks:
- caddy
ports:
- "6789:6789"
- "61985:61985"
- "61986:61986"
volumes:
- beef:/root/.ms4f
- /tmp/beef:/tmp/data
- ../data/beef/config.yaml:/beef/config.yaml
labels:
caddy: beef.marcpartensky.com"
caddy.reverse_proxy: "{{upstreams 3000}}"
caddy.@ws.0_header: "Connection *Upgrade*"
caddy.@ws.1_header: "Upgrade websocket"
caddy.0_reverse_proxy: "@ws {{upstreams 61985}}"
traefik.enable: "true"
# traefik.http.routers.beef.rule: Host(`beef.marcpartensky.com`)
traefik.http.routers.beef.rule: Host(`beef.marcpartensky.fr`)
traefik.http.routers.beef.entrypoints: websecure
traefik.http.routers.beef.tls.certresolver: tls
traefik.http.services.beef.loadbalancer.server.port: 3000
volumes:
beef:
networks:
caddy:
external: true
+26
View File
@@ -0,0 +1,26 @@
version: "3.9"
services:
burpserver:
image: pschiffe/burp-server
ports:
- "4971:4971"
volumes:
- conf:/etc/burp
- data:/var/spool/burp
environment:
BURP_CLIENTS_CONFIG: "host1:pass1 host2:pass2 host3:pass3"
tmpfs:
- /run
- /tmp
privileged: true
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.burpserver.rule: Host(`burp.marcpartensky.fr`)
# traefik.http.routers.burpserver.entrypoints: websecure
# traefik.http.routers.burpserver.tls.certresolver: tls
# traefik.http.services.burpserver.loadbalancer.server.port: 4971
volumes:
conf:
data:
+6 -5
View File
@@ -8,18 +8,19 @@ configs:
services:
caddy:
image: lucaslorentz/caddy-docker-proxy:ci-alpine
image: marcpartensky/caddy
ports:
- "80:80"
- "443:443"
# - "443:443"
environment:
CADDY_INGRESS_NETWORKS: caddy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- caddy_data:/data
# - ./data/caddy/Caddyfile:/etc/Caddyfile
- ../data/caddy/Caddyfile:/etc/Caddyfile
networks:
- caddy
caddy:
# ipv4_address: 10.0.0.1
logging:
# syslog?
options:
@@ -29,7 +30,7 @@ services:
test: ["CMD", "curl", "-f", "localhost:80"]
deploy:
labels: # Global options
caddy.email: marc.partensky@gmail.com
caddy.email: marc@marcpartensky.com
update_config:
parallelism: 1
delay: 5s
+54
View File
@@ -0,0 +1,54 @@
version: '3'
services:
cadvisor:
# image: google/cadvisor:v0.39.0
# image: google/cadvisor
image: gcr.io/cadvisor/cadvisor
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
command:
- '-docker_only'
- '-logtostderr'
# - '-storage-driver=influxdb'
# - '-storage-opt=host=swarm-manager1:8086'
# - '-storage-opt=database=cadvisor'
# - '-storage-opt=retention=1d'
# - '-storage-opt=user=root'
# - '-storage-opt=password=yourpassword'
# - '-housekeeping_interval=5s'
# - '-enable_load_reader'
# - '-cpu_global_percentage=true'
# - '-cpu_historic_interval=1m'
# - '-docker_label_enable'
networks:
- caddy
deploy:
placement:
constraints:
- node.role == manager
resources:
limits:
memory: 1g
reservations:
memory: 512m
restart_policy:
condition: on-failure
mode: global
labels:
traefik.enable: "true"
traefik.http.routers.cadvisor.rule: Host(`cadvisor.marcpartensky.fr`)
# traefik.http.routers.cadvisor.rule: >
# Host(`cadvisor.marcpartensky.com`) || Host(`cadvisor.marcpartensky.fr`)
traefik.http.routers.cadvisor.entrypoints: websecure
traefik.http.routers.cadvisor.tls.certresolver: tls
traefik.http.services.cadvisor.loadbalancer.server.port: 8080
traefik.http.routers.cadvisor.middlewares: ldap_auth
networks:
caddy:
external: true
+6
View File
@@ -0,0 +1,6 @@
version: "3.9"
services:
chatgpt:
image: wongsaang/chatgpt-ui:latest
ports:
- "8000:80"
+30
View File
@@ -0,0 +1,30 @@
version: "3.9"
services:
cloudflare:
image: docker.io/cloudflare/cloudflared:latest
restart: unless-stopped
env_file: ../data/secrets/cloudflare.env
command: tunnel --no-autoupdate run
networks:
- caddy
environment:
- TUNNEL_METRICS=0.0.0.0:60123
# - TUNNEL_TOKEN=${TUNNEL_TOKEN}
healthcheck:
test: ["CMD", "cloudflared", "tunnel", "--metrics", "localhost:60123", "ready"]
interval: 30s
timeout: 30s
retries: 3
traefik-cloudflare-tunnel:
image: docker.io/justmiles/traefik-cloudflare-tunnel:latest
container_name: traefik-cloudflare-tunnel
restart: unless-stopped
env_file:
- ../data/secrets/cloudflare.env
networks:
- caddy
networks:
caddy:
external: true
+50
View File
@@ -0,0 +1,50 @@
# Conduit - Behind Traefik Reverse Proxy
version: '3'
services:
homeserver:
image: matrixconduit/matrix-conduit:latest
restart: unless-stopped
# labels:
# - "traefik.enable=true"
# - "traefik.docker.network=proxy" # Change this to the name of your Traefik docker proxy network
# - "traefik.http.routers.to-conduit.rule=Host(`sub_domain.domain.com`)" # Change to the address on which Conduit is hosted
# - "traefik.http.routers.to-conduit.tls=true"
# - "traefik.http.routers.to-conduit.tls.certresolver=letsencrypt"
# - "traefik.http.routers.to-conduit.middlewares=cors-headers@docker"
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=*"
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization"
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS"
ports:
- 8448:6167
volumes:
- db:/srv/conduit/.local/share/conduit
### Uncomment if you want to use conduit.toml to configure Conduit
### Note: Set env vars will override conduit.toml values
- ./conduit.toml:/srv/conduit/conduit.toml
networks:
- proxy
environment:
CONDUIT_SERVER_NAME: sub_domain.domain.com # replace with your own name
CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'
CONDUIT_ALLOW_REGISTRATION : 'true'
### Uncomment and change values as desired
# CONDUIT_ADDRESS: 0.0.0.0
# CONDUIT_PORT: 6167
# CONDUIT_CONFIG: '/srv/conduit/conduit.toml' # if you want to configure purely by env vars, set this to an empty string ''
# Available levels are: error, warn, info, debug, trace - more info at: https://docs.rs/env_logger/*/env_logger/#enabling-logging
# CONDUIT_LOG: info # default is: "warn,_=off,sled=off"
CONDUIT_LOG: debug
# CONDUIT_ALLOW_JAEGER: 'false'
# CONDUIT_ALLOW_ENCRYPTION: 'false'
# CONDUIT_ALLOW_FEDERATION: 'false'
# CONDUIT_DATABASE_PATH: /srv/conduit/.local/share/conduit
# CONDUIT_WORKERS: 10
# CONDUIT_MAX_REQUEST_SIZE: 20_000_000 # in bytes, ~20 MB
networks:
proxy:
+17
View File
@@ -0,0 +1,17 @@
version: "3.9"
services:
cowrie:
image: rayson/cowrie:20160907-1
user: cowrie
ports:
- "22:2222/tcp"
- "23:2223/tcp"
environment:
COWRIE_TELNET_ENABLED: "yes"
volumes:
- cowrie:/opt/cowrie/data:Z
- cowrie-log:/opt/cowrie/log:Z
volumes:
cowrie:
cowrie-log:
+21
View File
@@ -0,0 +1,21 @@
version: "3.9"
services:
controller:
image: cybercube/crafty-controller
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.services.controller.loadbalancer.server.port: 8000
traefik.http.routers.controller.rule: Host(`controller.marcpartensky.fr`)
# traefik.http.routers.controller.rule: >
# Host(`controller.marcpartensky.com`) || Host(`controller.marcpartensky.fr`)
traefik.http.routers.controller.entrypoints: websecure
# traefik.http.routers.controller.tls.certresolver: tls
traefik.http.routers.controller.tls.certresolver: cloudflare
# traefik.http.routers.controller.middlewares: ldap_auth
networks:
caddy:
external: true
+28
View File
@@ -0,0 +1,28 @@
version: "3.9"
services:
crontab:
image: alseambusher/crontab-ui
restart: unless-stopped
networks:
- caddy
# ports:
# - 8000:8000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /srv/crontab:/crontab-ui/crontabs
labels:
traefik.enable: "true"
traefik.http.services.crontab.loadbalancer.server.port: 8000
traefik.http.routers.crontab.rule: >
Host(`cron.marcpartensky.com`)
traefik.http.routers.crontab.entrypoints: web
# traefik.http.routers.ui.tls.certresolver: tls
# traefik.http.routers.ui.tls.certresolver: cloudflare
traefik.http.routers.crontab.middlewares: ldap_auth
volumes:
crontabs:
networks:
caddy:
external: true
+21
View File
@@ -0,0 +1,21 @@
version: "3.9"
services:
dbdesigner:
image: marcpartensky/dbdesigner
container_name: dbdesigner
networks:
- caddy
environment:
PORT: 3000
labels:
# traefik.enable: "true"
# traefik.http.services.dbdesigner.loadbalancer.server.port: 3000
# traefik.http.routers.dbdesigner.rule: >
# Host(`dbdesigner.marcpartensky.com`)
# traefik.http.routers.dbdesigner.entrypoints: web
# traefik.http.routers.dbdesigner.tls.certresolver: tls
traefik.http.routers.dbdesigner.middlewares: ldap_auth
networks:
caddy:
external: true
+2 -2
View File
@@ -15,13 +15,13 @@ services:
# healthcheck:
# test: CMD echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
mongo_express:
discord_mongo_express:
image: mongo-express
restart: unless-stopped
environment:
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
env_file:
- ../data/secrets/mongo_express.env
- ../data/secrets/discord_mongo_express.env
networks:
- discord
- caddy
+39
View File
@@ -0,0 +1,39 @@
# version: "3.9"
services:
bot:
# image: docker.io/marcpartensky/discord-bot:v141.138ee20.2024-09-08
image: docker.io/marcpartensky/discord-bot:latest
# image: docker.io/marcpartensky/discord-bot:v152.04b7e7a.2024-09-15
restart: unless-stopped
ports:
- "7011:8000"
networks:
- discord
- postgres
env_file:
- ../data/secrets/discord-bot.env
deploy:
replicas: 1
# ia:
# image: marcpartensky/discord-bot
# restart: unless-stkopped
# ports:
# - "7011:8000"
# networks:
# - discord
# env_file:
# - ../data/secrets/ia.env
# deploy:
# replicas: 1
# chatgpt:
# image: xxxbrian/discord_chatgpt_bot:latest
# env_file:
# - ../data/secrets/discord_chatgpt.env
networks:
discord:
postgres:
external: true
-13
View File
@@ -1,13 +0,0 @@
version: "3.9"
services:
docker_api:
image: marcpartensky/docker-api
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- discord
networks:
discord:
+22
View File
@@ -0,0 +1,22 @@
version: "3.9"
services:
docker_api:
image: marcpartensky/docker-api
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- discord
# db:
# image: postgres
# container_name: docker-app-db
# restart: unless-stopped
# environment:
# POSTGRES_USER: docker_user
# POSTGRES_PASSWORD: d3kTrklm54208
# POSTGRES_DB: docker
networks:
discord:
+8
View File
@@ -0,0 +1,8 @@
version: "3.3"
services:
dockercraft:
image: gaetan/dockercraft
ports:
- "25567:25565"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:Z
+31
View File
@@ -0,0 +1,31 @@
version: "3.8"
services:
dockge:
image: louislam/dockge:1
container_name: dockge
restart: unless-stopped
# ports:
# - 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ../data/dockge:/app/data
# Stacks Directory
# ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH.
# ⚠️ 1. FULL path only. No relative path (MUST)
# ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST)
- ./:/opt/stacks
environment:
# Tell Dockge where to find the stacks
- DOCKGE_STACKS_DIR=/opt/stacks
networks:
- caddy
# labels:
# traefik.enable: "true"
# traefik.http.services.dockge.loadbalancer.server.port: 5001
# traefik.http.routers.dockge.rule: >
# Host(`dockge.marcpartensky.com`)
# traefik.http.routers.dockge.entrypoints: web
# traefik.http.routers.dockge.middlewares: ldap_auth
networks:
caddy:
external: true
+28
View File
@@ -0,0 +1,28 @@
version: "3.9"
services:
dockvpn:
image: alekslitvinenk/openvpn
cap_add:
- NET_ADMIN
networks:
- caddy
devices:
- /dev/net/tun
ports:
- 1194:1194/udp
- 8080:8080/tcp
volumes:
- ../data/dockvpn:/opt/Dockovpn_data/clients
environment:
HOST_ADDR: vpn.marcpartensky.fr
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.dockvpn.rule: >
Host(`dockvpn.marcpartensky.fr`)
traefik.http.routers.dockvpn.entrypoints: websecure
traefik.http.routers.dockvpn.tls.certresolver: cloudflare
traefik.http.services.dockvpn.loadbalancer.server.port: 8080
networks:
caddy:
external: true
+27
View File
@@ -0,0 +1,27 @@
version: "3.9"
services:
docuseal:
container_name: docuseal
image: docuseal/docuseal:latest
ports:
- 3000:3000
volumes:
- /srv/docuseal:/data
env_file:
- ../data/secrets/docuseal.env
networks:
- caddy
- postgres
# labels:
# traefik.enable: "true"
# traefik.http.routers.docuseal.rule: >
# Host(`docuseal.marcpartensky.com`)
# traefik.http.routers.docuseal.entrypoints: web
# traefik.http.services.docuseal.loadbalancer.server.port: 3000
networks:
caddy:
external: true
postgres:
external: true
+37
View File
@@ -0,0 +1,37 @@
version: "3.9"
services:
duplicati:
image: lscr.io/linuxserver/duplicati:latest
restart: unless-stopped
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Paris
# CLI_ARGS: #optional
volumes:
- /srv:/srv
- duplicati_config:/config
- duplicati_backups:/backups
- duplicati_source:/source
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.services.duplicati.loadbalancer.server.port: 8200
traefik.http.routers.duplicati.rule: >
Host(`duplicati.marcpartensky.com`) ||
Host(`duplicati.marcpartensky.fr`)
traefik.http.routers.duplicati.entrypoints: websecure
traefik.http.routers.duplicati.tls.certresolver: tls
# traefik.http.routers.duplicati.tls.certresolver: cloudflare
# traefik.http.routers.duplicati.middlewares: ldap_auth
volumes:
duplicati_config:
duplicati_backups:
duplicati_source:
networks:
caddy:
external: true
+7
View File
@@ -0,0 +1,7 @@
version: "3.9"
services:
image: fazalfarhan01/earnapp:lite
volumes:
- earnapp:/etc/earnapp
environment:
EARNAPP_UUID: $EARNAPP_DEVICE_ID
+32
View File
@@ -0,0 +1,32 @@
services:
ebook2audiobook:
image: athomasson2/ebook2audiobookxtts:huggingface
platform: linux/amd64
restart: unless-stopped
volumes:
- /srv/ebook2audiobookxtts:/app/data
# ports:
# - "7860:7860" # Exposition du port 7860 pour accéder à l'application
networks:
- caddy
command: python app.py
labels:
traefik.enable: "true"
traefik.http.routers.ebook2audiobook.rule: >
Host(`ebook2audiobook.marcpartensky.com`)
traefik.http.routers.ebook2audiobook.entrypoints: web
traefik.http.services.ebook2audiobook.loadbalancer.server.port: 7860
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7860"]
interval: 30s
timeout: 10s
retries: 3
environment:
TZ: Europe/Paris # Définir le fuseau horaire
UID: 1000 # UID pour l'utilisateur
GID: 1000 # GID pour le groupe
PYTHONUNBUFFERED: 1 # Désactiver le tampon de sortie Python pour une meilleure visibilité des logs
networks:
caddy:
external: true
+34
View File
@@ -0,0 +1,34 @@
version: "3.9"
services:
etesync:
image: victorrds/etesync
restart: unless-stopped
networks:
- caddy
- postgres
env_file:
- ../data/secrets/etesync.env
volumes:
- static:/srv/etebase/static
- media:/data/media
deploy:
labels:
traefik.enable: "true"
traefik.http.services.etesync.loadbalancer.server.port: 3735
traefik.http.routers.etesync.rule: >
# Host(`etesync.marcpartensky.com`) ||
Host(`etesync.marcpartensky.fr`)
traefik.http.routers.etesync.entrypoints: websecure
traefik.http.routers.etesync.tls.certresolver: tls
# traefik.http.routers.etesync.tls.certresolver: cloudflare
# traefik.http.routers.etesync.middlewares: ldap_auth
networks:
postgres:
external: true
caddy:
external: true
volumes:
static:
media:
+38
View File
@@ -0,0 +1,38 @@
version: "3.9"
services:
etherpad:
image: etherpad/etherpad
container_name: etherpad
restart: unless-stopped
env_file:
- ../data/secrets/etherpad.env
# environment:
# SETTINGS_PATH: /etc/etherpad/settings.json
networks:
- caddy
- postgres
# volumes:
# - data:/opt/etherpad-lite/var
# volumes:
# - ../data/etherpad/settings.json:/opt/etherpad-lite/settings.json
labels:
traefik.enable: "true"
# traefik.http.routers.etherpad.rule: >
# Host(`pad.marcpartensky.com`)
# traefik.http.routers.etherpad.entrypoints: web
# # traefik.http.routers.etherpad.tls.certresolver: cloudflare
# traefik.http.services.etherpad.loadbalancer.server.port: 9001
traefik.http.middlewares.redirect-pad-com.redirectregex.regex: "^https://etherpad.marcpartensky.com/(.*)"
traefik.http.middlewares.redirect-pad-com.redirectregex.replacement: "https://pad.marcpartensky.com/$${1}"
traefik.http.middlewares.redirect-pad-fr.redirectregex.regex: "^https://etherpad.marcpartensky.fr/(.*)"
traefik.http.middlewares.redirect-pad-fr.redirectregex.replacement: "https://pad.marcpartensky.fr/$${1}"
# volumes:
# data:
networks:
caddy:
external: true
postgres:
external: true
+18
View File
@@ -0,0 +1,18 @@
version: "3.9"
services:
fail2ban:
image: crazymax/fail2ban:latest
restart: unless-stopped
network_mode: "host"
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- fail2ban:/data
- /var/log:/var/log:ro
env_file:
- ../data/secrets/fail2ban.env
volumes:
fail2ban:
+60
View File
@@ -0,0 +1,60 @@
version: "3.9"
services:
fdroid:
image: nginx
# image: registry.gitlab.com/fdroid/docker-executable-fdroidserver:master
restart: unless-stopped
env_file:
- ../data/secrets/fdroid.env
# command: bash -c './wait-for postgres:5432 -- python3 manage.py migrate && ./httpd-foreground'
volumes:
- /srv/fdroid:/usr/share/nginx/html:ro
- ../data/fdroid/config.py:/apk/config.py
- ../data/fdroid/fdroid.keystore:/tmp/my.keystore
# - /srv/fdroid/apk:/repo
# - /srv/fdroid:/repomaker/data
networks:
- caddy
- postgres
labels:
traefik.enable: "true"
traefik.http.services.fdroid.loadbalancer.server.port: 80
traefik.http.routers.fdroid.rule: Host(`fdroid.marcpartensky.com`)
traefik.http.routers.fdroid.entrypoints: web
# fdroid:
# image: registry.gitlab.com/fdroid/repomaker:latest
# restart: unless-stopped
# env_file:
# - ../data/secrets/fdroid.env
# command: bash -c './wait-for postgres:5432 -- python3 manage.py migrate && ./httpd-foreground'
# volumes:
# - /srv/fdroid:/repomaker/data
# - ../data/fdroid/settings_docker.py:/repomaker/repomaker/settings_docker.py
# networks:
# - caddy
# - postgres
# labels:
# traefik.enable: "true"
# traefik.http.services.fdroid.loadbalancer.server.port: 80
# traefik.http.routers.fdroid.rule: Host(`fdroid.marcpartensky.com`)
# traefik.http.routers.fdroid.entrypoints: web
# fdroid-tasks:
# image: registry.gitlab.com/fdroid/repomaker:latest
# restart: unless-stopped
# env_file:
# - ../data/secrets/fdroid.env
# command: bash -c './wait-for fdroid:80 -- su www-data -p -s /bin/bash -c "cd /repomaker && python3 manage.py process_tasks"'
# volumes:
# - /srv/fdroid:/repomaker/data
# depends_on:
# - fdroid
networks:
caddy:
external: true
postgres:
external: true
+10
View File
@@ -0,0 +1,10 @@
version: "3.9"
services:
feroxbuster:
image: epi052/feroxbuster
volumes:
- /srv/feroxbuster:/srv
command: >
-u http://ravens-pu8yvgzavpu7ooyr.francecentral.cloudapp.azure.com
-x php
--wordlist /srv/rockyou.txt
+32
View File
@@ -0,0 +1,32 @@
version: "3.9"
services:
filebrowser:
image: hurlenko/filebrowser
container_name: filebrowser
restart: unless-stopped
# user: "${UID}:${GID}"
user: "1000:100"
# volumes:
# - /root/Videos:/data
volumes:
- /home/marc:/data
- ../data/filebrowser:/config
# environment:
# FB_BASEURL: /filebrowser
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.filebrowser.rule: Host(`file.marcpartensky.com`)
traefik.http.routers.filebrowser.entrypoints: web
# traefik.http.routers.filebrowser.tls.certresolver: tls
traefik.http.services.filebrowser.loadbalancer.server.port: 8080
traefik.http.routers.filebrowser.middlewares: ldap_auth
networks:
caddy:
external: true
volumes:
data:
+41
View File
@@ -0,0 +1,41 @@
version: "3.9"
services:
ffsync:
image: mozilla/syncserver:latest
restart: unless-stopped
env_file:
- ../data/secrets/firefox.env
networks:
- caddy
- postgres
volumes:
- /srv/firefox:/data
labels:
traefik.enable: "true"
traefik.http.routers.ffsync.rule: Host(`firefox.marcpartensky.com`)
traefik.http.routers.ffsync.entrypoints: web
traefik.http.services.ffsync.loadbalancer.server.port: 80
# labels:
# - traefik.enable: true
# - traefik.backend: ffsync
# - traefik.frontend.rule: Host:firefoxsync.${DOMAINNAME}
# - traefik.port: 5000
# - traefik.docker.network: caddy
# ffsync_db:
# image: postgres:alpine
# container_name: ffsync_db
# restart: unless-stopped
# networks:
# - ffsync_network
# environment:
# POSTGRES_DB: ${FFSYNC_DATABASE_DB}
# POSTGRES_USER: ${FFSYNC_DATABASE_USER}
# POSTGRES_PASSWORD: ${FFSYNC_DB_PASSWORD}
networks:
postgres:
external: true
caddy:
external: true
+32
View File
@@ -0,0 +1,32 @@
version: "3.9"
services:
focalboard:
image: docker.io/mattermost/focalboard
restart: unless-stopped
volumes:
- data:/opt/focalboard/data
- pack:/opt/focalboard/pack
- ../data/focalboard/config.json:/opt/focalboard/config.json
environment:
EXCLUDE_ENTERPRISE: "1"
networks:
- caddy
- postgres
labels:
traefik.enable: "true"
traefik.http.routers.focalboard.rule: >
Host(`board.marcpartensky.com`)
traefik.http.routers.focalboard.entrypoints: web
# traefik.http.routers.focalboard.tls.certresolver: tls
traefik.http.services.focalboard.loadbalancer.server.port: 8000
traefik.http.middlewares.focalboard.redirectscheme.scheme: https
# traefik.http.routers.focalboard.middlewares: ldap_auth
volumes:
data:
pack:
networks:
postgres:
external: true
caddy:
external: true
+54
View File
@@ -0,0 +1,54 @@
version: "3.9"
services:
mariadb:
image: mariadb:10.6
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --skip-character-set-client-handshake
- --skip-innodb-read-only-compressed # Temporary fix for MariaDB 10.6
env_file:
- ../data/secrets/frappelms.env
volumes:
- /srv/mariadb:/var/lib/mysql
networks:
- mariadb
ports:
- target: 3306
published: 3306
mode: host
frappelms:
image: frappe/bench:latest
command: bash /workspace/init.sh
environment:
SHELL: /bin/bash
working_dir: /home/frappe
volumes:
- /srv/frappelms:/workspace
# env_file:
# - ../data/secrets/frappelms.env # useless
networks:
- caddy
- mariadb
- redis
# ports:
# - 8000:8000
# - 9000:9000
labels:
traefik.enable: "true"
traefik.http.routers.frappelms.rule: >
Host(`lms.marcpartensky.com`)
traefik.http.routers.frappelms.entrypoints: web
traefik.http.services.frappelms.loadbalancer.server.port: 8000
volumes:
mariadb-data:
networks:
mariadb:
redis:
external: true
caddy:
external: true
+31
View File
@@ -0,0 +1,31 @@
version: "3.9"
services:
fuseki:
image: stain/jena-fuseki
volumes:
# - ./config:/fuseki/configuration
- data:/fuseki/databases
# environment:
# - FUSEKI_HOME=/fuseki
# - FUSEKI_BASE=/fuseki/databases
env_file:
- ../data/secrets/fuseki.env
networks:
- caddy
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
labels:
traefik.enable: "true"
traefik.http.routers.fuseki.rule: Host(`fuseki.marcpartensky.com`)
traefik.http.services.fuseki.loadbalancer.server.port: 3030
networks:
caddy:
external: true
volumes:
data:
+25
View File
@@ -0,0 +1,25 @@
version: "3.9"
services:
gitbook:
image: marcpartensky/gitbook
# image: billryan/gitbook
# image: yanqd0/gitbook
restart: unless-stopped
# volumes:
# - ../data/gitbook:/gitbook
environment:
# BOOK_URL: https://github.com/marcpartensky/docker
BOOK_URL: https://github.com/marcpartensky/markdown
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.gitbook.rule: Host(`gitbook.marcpartensky.com`)
traefik.http.routers.gitbook.entrypoints: websecure
traefik.http.routers.gitbook.tls.certresolver: tls
traefik.http.services.gitbook.loadbalancer.server.port: 4000
networks:
caddy:
external: true
+51
View File
@@ -0,0 +1,51 @@
version: "3.9"
services:
gitea:
image: gitea/gitea:1.14.6
container_name: gitea
restart: unless-stopped
# user: git
# environment:
# - USER=git
# - USER_UID=1004
# - USER_GID=1004
env_file:
- ../data/secrets/gitea.env
networks:
- caddy
- postgres
volumes:
- ssh:/data/git/.ssh
- data:/data
# - /etc/localtime:/etc/localtime:ro
ports:
- "42070:22"
# labels:
# caddy: gitea.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 3000}}"
# traefik.enable: "true"
# traefik.http.routers.gitea.rule: Host(`git.marcpartensky.com`)
# traefik.http.routers.gitea.entrypoints: websecure
# traefik.http.routers.gitea.tls.certresolver: tls
# traefik.http.services.gitea.loadbalancer.server.port: 3000
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.gitea.rule: >
# Host(`git.marcpartensky.com`) ||
# Host(`git.marcpartensky.fr`)
# traefik.http.routers.gitea.entrypoints: websecure
# # traefik.http.routers.gitea.tls.certresolver: tls
# traefik.http.routers.gitea.tls.certresolver: cloudflare
# traefik.http.services.gitea.loadbalancer.server.port: 3000
volumes:
data:
ssh:
networks:
postgres:
external: true
caddy:
external: true
+58
View File
@@ -0,0 +1,58 @@
version: "3.9"
services:
gitlab:
container_name: gitlab
image: gitlab/gitlab-ce:latest
restart: unless-stopped
hostname: gitlab.marcpartensky.com
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.marcpartensky.com'
gitlab_rails['gitlab_shell_ssh_port'] = 7020
ports:
- '7020:22'
networks:
- caddy
volumes:
- gitlab_config:/etc/gitlab
- gitlab_log:/var/log/gitlab
- gitlab_data:/var/opt/gitlab
labels:
# caddy: gitlab.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams http 80}}"
traefik.enable: "true"
# traefik.http.routers.gitlab.rule: Host(`gitlab.marcpartensky.com`)
# traefik.http.routers.gitlab.entrypoints: websecure
# traefik.http.routers.gitlab.tls.certresolver: tls
# traefik.http.services.gitlab.loadbalancer.server.port: 80
# # shm_size: '512m'
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.gitlab.rule: Host(`gitlab.marcpartensky.com`)
# traefik.http.routers.gitlab.entrypoints: websecure
# traefik.http.routers.gitlab.tls.certresolver: tls
# traefik.http.services.gitlab.loadbalancer.server.port: 80
# resources:
# reservations:
# cpus: "1"
# # memory: "512M"
# memory: "3G"
gitlab-runner:
image: gitlab/gitlab-runner:alpine
container_name: gitlab-runner
restart: unless-stopped
# deploy:
# mode: replicated
# replicas: 2
volumes:
gitlab_config:
gitlab_log:
gitlab_data:
networks:
caddy:
external: true
+36
View File
@@ -0,0 +1,36 @@
version: "3.9"
services:
gluetun:
image: qmcgaw/gluetun
cap_add:
- NET_ADMIN
env_file:
- ../data/secrets/gluetun.env
# environment:
# # VPN_SERVICE_PROVIDER: protonvpn
# # VPN_SERVICE_PROVIDER: openvpn
# OPENVPN_USER: marcpartensky
# OPENVPN_PASSWORD: Lxxxxxxxxxyyyyyxxxxn
# # SERVER_COUNTRIES: France
# # FREE_ONLY: on # Only required when using ProtonVPN's free service
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp # Application container's ports to be published
networks:
- vpn
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.services.gluetun.loadbalancer.server.port: 8000
traefik.http.routers.gluetun.rule: Host(`gluetun.marcpartensky.com`)
traefik.http.routers.gluetun.entrypoints: websecure
traefik.http.routers.gluetun.tls.certresolver: tls
traefik.http.routers.gluetun.middlewares: ldap_auth
networks:
vpn:
external: true
caddy:
external: true
+7
View File
@@ -0,0 +1,7 @@
version: "3.9"
services:
gpg:
image: marcpartensky/gpg
volumes:
- /srv:/srv
- ../data/gpg:/root/keys
+39
View File
@@ -0,0 +1,39 @@
version: "3.9"
services:
grafana:
image: grafana/grafana
container_name: grafana
restart: unless-stopped
env_file:
- ../data/secrets/grafana.env
# environment:
# GF_INSTALL_PLUGINS: grafana-ldap-auth
volumes:
- ../data/grafana:/etc/grafana
- grafana:/var/lib/grafana
networks:
- caddy
- postgres
- ldap
# deploy:
# labels:
# caddy: grafana.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 3000}}"
# traefik.enable: "true"
# traefik.http.routers.grafana.rule: >
# Host(`grafana.marcpartensky.fr`) ||
# Host(`grafana.marcpartensky.com`)
# traefik.http.routers.grafana.entrypoints: websecure
# traefik.http.routers.grafana.tls.certresolver: tls
# traefik.http.services.grafana.loadbalancer.server.port: 3000
volumes:
grafana:
networks:
ldap:
external: true
postgres:
external: true
caddy:
external: true
+44
View File
@@ -0,0 +1,44 @@
version: "3.9"
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
restart: unless-stopped
environment:
PUID: 1000
PGID: 1000
TZ: France/Paris
volumes:
- ../data/heimdall:/config
networks:
- caddy
- postgres
- redis
labels:
# caddy: heimdall.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.heimdall.rule: Host(`heimdall.marcpartensky.com`)
traefik.http.routers.heimdall.entrypoints: web
# traefik.http.routers.heimdall.tls: "true"
# traefik.http.middlewares.test-ldap-auth.plugin.ldapAuth.source: marcpartensky.com
# traefik.http.middlewares.test-ldap-auth.plugin.ldapAuth.baseDN: dc=marcpartensky,dc=com
# traefik.http.services.heimdall.loadbalancer.server.port: 80
# traefik.http.routers.heimdall.middlewares: authelia-basic@docker
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.heimdall.rule: Host(`heimdall.marcpartensky.com`)
# traefik.http.routers.heimdall.entrypoints: websecure
# traefik.http.routers.heimdall.tls.certresolver: tls
# traefik.http.services.heimdall.loadbalancer.server.port: 80
# traefik.http.routers.duplicati.middlewares: ldap_auth
networks:
redis:
external: true
postgres:
external: true
caddy:
external: true
+10
View File
@@ -0,0 +1,10 @@
version: "3.9"
services:
homeassistant:
restart: unless-stopped
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- config:/config
- /etc/localtime:/etc/localtime:ro
privileged: true
network_mode: host
+31
View File
@@ -0,0 +1,31 @@
version: "3.9"
services:
homer:
image: b4bz/homer
container_name: homer
restart: unless-stopped
volumes:
- homer:/www/assets
environment:
INIT_ASSETS: 1 # default
networks:
- caddy
# labels:
# caddy: homer.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 8080}}"
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.homer.rule: >
# Host(`homer.marcpartensky.com`) ||
# Host(`homer.marcpartensky.fr`)
# traefik.http.routers.homer.entrypoints: websecure
# traefik.http.routers.homer.tls.certresolver: tls
# traefik.http.services.homer.loadbalancer.server.port: 8080
volumes:
homer:
networks:
caddy:
external: true
+6
View File
@@ -0,0 +1,6 @@
version: "3.9"
services:
honeygain:
image: marcpartensky/honeygain
env_file:
- ../data/secrets/honeygain.env
+16
View File
@@ -0,0 +1,16 @@
version: "3.9"
services:
hydra:
image: marcpartensky/hydra:latest
network_mode: host
env_file:
- ../data/secrets/hydra.env
# command: -P /rockyou.txt -L /usernames.txt ssh://192.168.252.18
# workdir: /root
volumes:
- ../data/hydra/rockyou.txt:/rockyou.txt
- ../data/hydra/usernames.txt:/usernames.txt
- hydra:/root
volumes:
hydra:
+5 -3
View File
@@ -1,17 +1,19 @@
version: "3.9"
services:
discord-bot:
ia:
image: marcpartensky/discord-bot
restart: unless-stopped
ports:
- "7010:8000"
- "7011:8000"
networks:
- discord
depends_on:
- docker_api
env_file:
- ../data/secrets/esclave.env
- ../data/secrets/ia.env
deploy:
replicas: 1
networks:
discord:
+14 -19
View File
@@ -2,35 +2,30 @@ version: "3.9"
services:
ialab:
image: marcpartensky/ialab
user: nobody
restart: unless-stopped
environment:
FLASK_APP: server.py
# env_file:
# - $HOME/git/ialab/.flaskenv
# working_dir: /app
entrypoint: flask run --host ialab --port 80
# entrypoint: "gunicorn server:app"
# entrypoint: "gunicorn --chdir /app server:app"
volumes:
- ialab:/app
image: marcpartensky/ialab:latest
# volumes:
# - ialab:/app
networks:
- caddy
depends_on:
- caddy
labels:
caddy: ialab.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
caddy.reverse_proxy: "{{upstreams 8000}}"
traefik.enable: "true"
traefik.http.routers.ialab.rule: Host(`ialab.marcpartensky.com`)
traefik.http.routers.ialab.entrypoints: websecure
traefik.http.routers.ialab.tls.certresolver: tls
traefik.http.services.ialab.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.ialab.rule: Host(`ialab.marcpartensky.com`)
traefik.http.routers.ialab.entrypoints: websecure
traefik.http.routers.ialab.tls.certresolver: tls
traefik.http.services.ialab.loadbalancer.server.port: 80
volumes:
ialab:
# volumes:
# ialab:
#
networks:
caddy:
external: true
+65
View File
@@ -0,0 +1,65 @@
version: "3.9"
services:
ipfs:
restart: unless-stopped
image: lscr.io/linuxserver/ipfs
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Paris
volumes:
- ipfs:/config
- /srv/:/srv
networks:
- caddy
ports:
# - 80:80 #dumb http client
# - 443:443 #optional
- 4001:4001
- 5001:5001
- 8080:8080
deploy:
resources:
limits:
cpus: '0.1'
memory: 500M
# reservations:
# cpus: '0.1'
# memory: 100M
labels:
traefik.enable: "true"
# traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.com`)
traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.fr`)
# traefik.http.routers.ipfs.rule: >
# Host(`ipfs.marcpartensky.com`) || Host(`ipfs.marcpartensky.fr`)
# traefik.http.routers.ipfs.entrypoints: websecure
# traefik.http.routers.ipfs.tls.certresolver: tls
traefik.http.routers.ipfs.tls.certresolver: cloudflare
traefik.http.services.ipfs.loadbalancer.server.port: 5001
traefik.http.routers.ifps.middlewares: ldap_auth
# traefik.frontend.redirect.regex: ^https://ipfs.marcpartensky.com$$
# the middleware 'add-context' must be defined so that the regex rules can be attached to it
# traefik.http.routers.ifps.middlewares: add-context
#
# # here is the logic provided by gustavomtborges of this gist:
# traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
# traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
#
traefik.http.routers.ipfs.middlewares: custom_repath
traefik.http.middlewares.custom_repath.replacepathregex.regex: ^/$$
traefik.http.middlewares.custom_repath.replacepathregex.replacement: /webui
# the middleware 'add-context' must be defined so that the regex rules can be attached to it
traefik.http.routers.ipfs.middlewares: add-context
# here is the logic provided by gustavomtborges of this gist:
traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
volumes:
ipfs:
networks:
caddy:
external: true
+15
View File
@@ -0,0 +1,15 @@
version: "3.9"
services:
ipsec:
image: hwdsl2/ipsec-vpn-server
restart: unless-stopped
privileged: true
ports:
- "500:500/udp"
- "4500:4500/udp"
volumes:
- ikev2-vpn:/etc/ipsec.d
- /lib/modules:/lib/modules:ro
volumes:
ikev2-vpn:
+49
View File
@@ -0,0 +1,49 @@
version: "3.9"
services:
izitdone-back:
image: docker.io/marcpartensky/izitdone-back:v23.ca2e91d09917d423458640113e852cfd60d6916e
restart: unless-stopped
networks:
- caddy
- postgres
env_file:
- ../data/secrets/izitdone.env
# volumes:
# - ../data/secrets/izitdone.env:/root/.env
labels:
traefik.enable: "true"
traefik.http.routers.izitdone-back.rule: >
Host(`izitdone.marcpartensky.com`) && PathPrefix(`/api`)
traefik.http.routers.izitdone-back.entrypoints: web
traefik.http.services.izitdone-back.loadbalancer.server.port: 8000
traefik.http.middlewares.izitdone-back.redirectscheme.scheme: https
traefik.http.middlewares.izitdone-back-strip.stripprefix.prefixes: /api
# traefik.http.middlewares.izitdone-back-strip.stripprefix.forceslash: false
traefik.http.routers.izitdone-back.middlewares: izitdone-back-strip
# traefik.http.routers.izitdone-back.tls.certresolver: tls
# traefik.http.routers.izitdone-back.middlewares: ldap_auth
izitdone-front:
image: docker.io/marcpartensky/izitdone-front:latest
restart: unless-stopped
networks:
- caddy
- postgres
# volumes:
# - ../data/secrets/izitdone.env:/root/.env
labels:
traefik.enable: "true"
traefik.http.routers.izitdone-front.rule: >
Host(`izitdone.marcpartensky.com`) && !PathPrefix(`/api`)
traefik.http.routers.izitdone-front.entrypoints: web
# traefik.http.routers.izitdone-front.tls.certresolver: tls
traefik.http.services.izitdone-front.loadbalancer.server.port: 3000
traefik.http.middlewares.izitdone-front.redirectscheme.scheme: https
# traefik.http.routers.izitdone-front.middlewares: ldap_auth
networks:
postgres:
external: true
caddy:
external: true
+47
View File
@@ -0,0 +1,47 @@
version: "3.9"
services:
jellyfin:
image: docker.io/jellyfin/jellyfin:latest
container_name: jellyfin
environment:
# PUID: 1000
# PGID: 1000
# TZ: Europe/Paris
JELLYFIN_PublishedServerUrl: jellyfin.marcpartensky.com
devices:
- /dev/dri
volumes:
- config:/config
- cache:/cache
- /srv/jellyfin/media:/media
- /srv/jellyfin/movies:/movies
- /srv/jellyfin/musics:/musics
- /srv/jellyfin/photos:/photos
- ~/Videos/Youtube:/videos
# ports:
# - 8096:8096 #http
# - 8920:8920 #optional https self signed
# - 7359:7359/udp #optional lan discovery
# - 1900:1900/udp #optional dnla
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.jellyfin.rule: Host(`jellyfin.marcpartensky.com`)
traefik.http.routers.jellyfin.entrypoints: web
# traefik.http.routers.jellyfin.tls.certresolver: cloudflare
traefik.http.services.jellyfin.loadbalancer.server.port: 8096
volumes:
config:
cache:
media:
movies:
musics:
photos:
videos:
networks:
caddy:
external: true
+29
View File
@@ -0,0 +1,29 @@
version: "3.9"
services:
jenkins:
image: jenkins/jenkins:lts-jdk11
container_name: jenkins
user: root
volumes:
- jenkins:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
networks:
- caddy
# ports:
# - "50000:50000"
# labels:
# caddy: jenkins.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 8080}}"
# traefik.enable: "true"
# traefik.http.routers.jenkins.rule: Host(`jenkins.marcpartensky.com`)
# traefik.http.routers.jenkins.entrypoints: websecure
# traefik.http.routers.jenkins.tls.certresolver: tls
# traefik.http.services.jenkins.loadbalancer.server.port: 8080
volumes:
jenkins:
networks:
caddy:
external: true
+28 -4
View File
@@ -2,21 +2,45 @@ version: "3.9"
services:
jupyterhub:
image: jupyterhub/jupyterhub
image: marcpartensky/jupyterhub
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ../data/jupyterhub/jupyterhub_config.py:/srv/jupyterhub/jupyterhub_config.py
# - jupyterhub:/srv/jupyterhub
networks:
- caddy
- ldap
- caddy
- jupyterhub
environment:
DOCKER_JUPYTER_IMAGE: marcpartensky/jupyterlab
DOCKER_NETWORK_NAME: jupyterhub
# DOCKER_IMAGE: marcpartensky/jupyterlab
DOCKER_IMAGE: jupyterhub/singleuser
DOCKER_NETWORK_NAME: caddy
HUB_IP: jupyterhub
DOCKER_HOST: unix:///var/run/docker.sock
labels:
caddy: jupyterhub.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8000}}"
traefik.enable: "true"
traefik.http.routers.jupyterhub.rule: Host(`jupyterhub.marcpartensky.com`)
traefik.http.routers.jupyterhub.entrypoints: websecure
traefik.http.routers.jupyterhub.tls.certresolver: tls
traefik.http.services.jupyterhub.loadbalancer.server.port: 8000
# traefik.docker.network: jupyterhub_default
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.jupyterhub.rule: Host(`jupyterhub.marcpartensky.com`)
traefik.http.routers.jupyterhub.rule: Host(`hub.marcpartensky.fr`)
traefik.http.routers.jupyterhub.entrypoints: websecure
traefik.http.routers.jupyterhub.tls.certresolver: tls
traefik.http.services.jupyterhub.loadbalancer.server.port: 8000
networks:
jupyterhub:
name: jupyterhub
driver: overlay
caddy:
external: true
ldap:
external: true
+31 -10
View File
@@ -2,23 +2,42 @@ version: "3.9"
services:
jupyterlab:
# image: jupyter/datascience-notebook:latest
image: marcpartensky/jupyterlab
restart: unless-stopped
container_name: jupyterlab
# restart: unless-stopped
environment:
# - GEN_CERT=yes
JUPYTER_ENABLE_LAB: "yes"
GRANT_SUDO: "yes"
entrypoint: start.sh jupyter lab --user root
JUPYTER_CONFIG_DIR: /home/jupyter/.jupyter
# entrypoint: python -m jupyter lab
# entrypoint: start.sh jupyter lab --user root
networks:
- caddy
labels:
caddy: lab.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8888}}"
traefik.enable: "true"
traefik.http.routers.notebook.rule: Host(`lab.marcpartensky.com`)
traefik.http.routers.notebook.entrypoints: websecure
traefik.http.routers.notebook.tls.certresolver: tls
traefik.http.services.notebook.loadbalancer.server.port: 8888
# labels:
# caddy: lab.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 8888}}"
# traefik.enable: "true"
# traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.com`)
# traefik.http.routers.jupyterlab.entrypoints: websecure
# traefik.http.routers.jupyterlab.tls.certresolver: tls
# traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
# volumes:
# - jupyterlab:/home/jupyter
# - ../data/jupyterlab/:/home/jupyter/.jupyter/
# deploy:
# placement:
# constraints:
# - node.role == manager
# labels:
# traefik.enable: "true"
# # traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.fr`)
# traefik.http.routers.jupyterlab.rule: >
# Host(`lab.marcpartensky.fr`) && Host(`lab.marcpartensky.com`)
# traefik.http.routers.jupyterlab.entrypoints: websecure
# traefik.http.routers.jupyterlab.tls.certresolver: cloudflare
# traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
# entrypoint: start-notebook.sh \
# --NotebookApp.keyfile=key/0000_key-certbot.pem
# --NotebookApp.certfile=cert/0000_csr-certbot.pem
@@ -27,6 +46,8 @@ services:
# - /etc/letsencrypt/csr:/home/jovyan/work/cert
# - /etc/letsencrypt:/etc/letsencrypt
#
volumes:
jupyterlab:
networks:
caddy:
+29
View File
@@ -0,0 +1,29 @@
version: "3.9"
services:
keycloak:
image: quay.io/keycloak/keycloak:19.0.3
env_file:
- ../data/secrets/keycloak.env
networks:
- caddy
# command: start-dev
command: start --optimized
labels:
caddy: keycloak.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.keycloak.rule: Host(`keycloak.marcpartensky.com`)
traefik.http.routers.keycloak.entrypoints: websecure
traefik.http.routers.keycloak.tls.certresolver: tls
traefik.http.services.keycloak.loadbalancer.server.port: 8080
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.keycloak.rule: Host(`keycloak.marcpartensky.com`)
traefik.http.routers.keycloak.entrypoints: websecure
traefik.http.routers.keycloak.tls.certresolver: tls
traefik.http.services.keycloak.loadbalancer.server.port: 8080
networks:
caddy:
external: true
+6
View File
@@ -0,0 +1,6 @@
version: "3.9"
services:
kippo:
image: tomdesinto/kippo
ports:
- "22:22"
+14
View File
@@ -0,0 +1,14 @@
version: "3.9"
services:
languagetool:
image: erikvl87/languagetool
restart: unless-stopped
networks:
- caddy
labels:
caddy: languagetoo.marcpartensky.com
caddy.reverse_proxy: "{{ upstreams 8010 }}"
networks:
caddy:
external: true
+64
View File
@@ -0,0 +1,64 @@
version: "3.9"
services:
ldap_manager_go:
image: romnn/ldap-manager
# command: --generate
env_file:
- ../data/secrets/ldap_manager_go.env
networks:
- ldap
- caddy
environment:
HTTP_PORT: 80
GRPC_PORT: 9090
LDAP_HOST: "ldap"
LDAP_PORT: 389
# LDAP_ADMIN_PASSWORD: admin
# LDAP_CONFIG_PASSWORD: config
LDAP_ORGANIZATION: Marc Partensky
# LDAP_DOMAIN: marcpartensky.com
# LDAP_DOMAIN: marcpartensky.fr
# DAP_BASE_DN: dc=admin,dc=org
LDAP_DOMAIN: marcpartensky.com
LDAP_BASE_DN: dc=marcpartensky,dc=com
# DEFAULT_ADMIN_USERNAME: ldap-manager-php
# DEFAULT_ADMIN_PASSWORD: "@Rd2^28Yo9er*rZ52p!JkxQPq!!VvQ"
DEFAULT_ADMIN_USERNAME: marc
DEFAULT_ADMIN_PASSWORD: "D2%4&$ascXxxbJX%BY^tN6BRF@bY!F"
LDAP_ADMIN_USERNAME: marc
LDAP_ADMIN_PASSWORD: "D2%4&$ascXxxbJX%BY^tN6BRF@bY!F"
# FORCE_CREATE_ADMIN: "true"
LDAP_TLS: "false"
LDAP_USE_RFC2307BIS: "true"
ISSUER: ldap@marcpartensky.com
AUDIENCE: marcpartensky.com
GENERATE: "true" # ports:
# - 9090:9090
labels:
traefik.enable: "true"
traefik.http.routers.ldap_manager_go.rule: Host(`ldapgo.marcpartensky.com`)
# traefik.http.routers.ldap_manager_go.rule: >
# Host(`ldapgo.marcpartensky.com`)
traefik.http.routers.ldap_manager_go.entrypoints: web
# traefik.http.routers.ldap_manager_go.tls.certresolver: tls
traefik.http.services.ldap_manager_go.loadbalancer.server.port: 80
# deploy:
# labels:
# traefik.enable: "true"
# # traefik.http.routers.ldap_manager_go.rule: Host(`ldapgo.marcpartensky.com`)
# traefik.http.routers.ldap_manager_go.rule: >
# Host(`ldapgo.marcpartensky.com`) || Host(`ldapgo.marcpartensky.fr`)
# traefik.http.routers.ldap_manager_go.entrypoints: websecure
# traefik.http.routers.ldap_manager_go.tls.certresolver: tls
# traefik.http.services.ldap_manager_go.loadbalancer.server.port: 80
networks:
ldap:
external: true
caddy:
external: true
+48
View File
@@ -0,0 +1,48 @@
version: "3.9"
services:
ldap_manager:
image: wheelybird/ldap-user-manager:latest
restart: unless-stopped
environment:
SERVER_HOSTNAME: auth.marcpartensky.com
LDAP_URI: ldap://ldap:389
# LDAP_BASE_DN: dc=admin,dc=org
LDAP_BASE_DN: dc=marcpartensky,dc=com
LDAP_ADMINS_GROUP: admins
LDAP_ADMIN_BIND_DN: uid=5a5049f38c347a028dc67c975ef66cdc1e953ae57e89154fb074bcc18b1f4581,dc=marcpartensky,dc=com
LDAP_IGNORE_CERT_ERRORS: "true"
LDAP_REQUIRE_STARTTLS: "FALSE"
NO_HTTPS: "TRUE"
env_file:
- ../data/secrets/ldap.env
# depends_on:
# - ldap
networks:
- ldap
- caddy
labels:
# caddy: auth.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.ldap_manager.rule: Host(`auth.marcpartensky.com`)
traefik.http.routers.ldap_manager.entrypoints: web
# traefik.http.routers.ldap_manager.tls.certresolver: tls
traefik.http.services.ldap_manager.loadbalancer.server.port: 80
# deploy:
# labels:
# traefik.enable: "true"
# # traefik.http.routers.ldap_manager.rule: >
# # Host(`auth.marcpartensky.com`) || Host(`auth.marcpartensky.fr`)
# traefik.http.routers.ldap_manager.rule: >
# Host(`auth.marcpartensky.com`)
# traefik.http.routers.ldap_manager.entrypoints: web
# # traefik.http.routers.ldap_manager.tls.certresolver: tls
# # traefik.http.routers.ldap_manager.tls.certresolver: cloudflare
# traefik.http.services.ldap_manager.loadbalancer.server.port: 80
networks:
ldap:
external: true
caddy:
external: true
+36
View File
@@ -0,0 +1,36 @@
version: "3.9"
services:
ldap:
image: docker.io/osixia/openldap:1.3.0
restart: unless-stopped
environment:
LDAP_ORGANISATION: admin
LDAP_DOMAIN: admin.org
LDAP_RFC2307BIS_SCHEMA: "true"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "false"
LDAP_TLS_VERIFY_CLIENT: never
env_file:
- ../data/secrets/ldap.env
networks:
- ldap
ports:
- "636:636"
volumes:
- ldap:/var/lib/ldap
- ldap_slapd:/etc/ldap/slapd.d
backup:
image: docker.io/osixia/openldap-backup:1.5.0
environment:
LDAP_BACKUP_CONFIG_CRON_EXP: "0 5 * * *"
LDAP_BACKUP_DATA_CRON_EXP: "0 5 * * *"
volumes:
ldap:
ldap_slapd:
networks:
ldap:
external: true
+16
View File
@@ -0,0 +1,16 @@
version: "3.9"
services:
libreswan:
image: ibotty/ipsec-libreswan
restart: unless-stopped
privileged: true
environment:
HOST: /host
IMAGE: ipsec-libreswan
NAME: libreswan
entrypoint: /bin/sh
command: /bin/install.sh
volumes:
- libreswan:/host
volumes:
libreswan:
+29
View File
@@ -0,0 +1,29 @@
version: "3.9"
services:
logseq:
image: ghcr.io/logseq/logseq-webapp:latest
# volumes:
networks:
- traefik
- postgres
labels:
traefik.enable: "true"
# traefik.http.routers.focalboard.rule: >
# Host(`board.marcpartensky.com`) || Host(`board.marcpartensky.fr`)
traefik.http.routers.logseq.service: logseq
traefik.http.routers.logseq.rule: >
Host(`logseq.marcpartensky.com`)
traefik.http.routers.logseq.tls: true
traefik.http.routers.logseq.entrypoints: web-secure
traefik.http.routers.logseq.tls.certresolver: default
traefik.http.services.logseq.loadbalancer.server.port: 80
# traefik.http.routers.focalboard.middlewares: ldap_auth
volumes:
data:
pack:
networks:
postgres:
external: true
traefik:
external: true
+687
View File
@@ -0,0 +1,687 @@
version: '3.9'
x-common:
dns: &dns
dns:
- 10.22.1.254
redis: &redis
ipv4_address: 10.22.1.249
sogo: &sogo
ipv4_address: 10.22.1.248
nginx: &nginx
ipv4_address: 10.22.1.252
postfix: &postfix
ipv4_address: 10.22.1.253
unbound: &unbound
ipv4_address: 10.22.1.254
services:
unbound:
image: mailcow/unbound:1.15
restart: unless-stopped
environment:
TZ: ${TZ}
volumes:
- ../data/mailcow/hooks/unbound:/hooks:Z
- ../data/mailcow/conf/unbound/unbound.conf:/etc/unbound/unbound.conf:ro,Z
tty: true
networks:
mailcow:
<<: *unbound
ipv4_address: 10.22.1.254
aliases:
- unbound
mysql:
image: mariadb:10.5
restart: unless-stopped
depends_on:
- unbound
stop_grace_period: 45s
volumes:
- mysql-vol-1:/var/lib/mysql/:Z
- mysql-socket-vol-1:/var/run/mysqld/:z
- ../data/mailcow/conf/mysql/:/etc/mysql/conf.d/:ro,Z
env_file:
- ../data/secrets/mailcow.env
# environment:
# TZ: ${TZ}
# MYSQL_ROOT_PASSWORD: ${DBROOT}
# MYSQL_DATABASE: ${DBNAME}
# MYSQL_USER: ${DBUSER}
# MYSQL_PASSWORD: ${DBPASS}
# MYSQL_INITDB_SKIP_TZINFO: 1
# ports:
# - "${SQL_PORT:-127.0.0.1:13306}:3306"
networks:
mailcow:
aliases:
- mysql
redis:
image: redis:6-alpine
restart: unless-stopped
volumes:
- redis-vol-1:/data/:Z
# ports:
# - "${REDIS_PORT:-127.0.0.1:7654}:6379"
env_file:
- ../data/secrets/mailcow.env
sysctls:
- net.core.somaxconn=4096
networks:
mailcow:
<<: *redis
ipv4_address: 10.22.1.249
aliases:
- redis
clamd:
image: mailcow/clamd:1.43
restart: unless-stopped
<<: *dns
volumes:
- ../data/mailcow/conf/clamav/:/etc/clamav/:Z
networks:
mailcow:
aliases:
- clamd
rspamd:
image: mailcow/rspamd:1.79
restart: unless-stopped
stop_grace_period: 30s
depends_on:
- dovecot
env_file:
- ../data/secrets/mailcow.env
# environment:
# TZ: ${TZ}
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
# IPV6_NETWORK: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
volumes:
- ../data/mailcow/hooks/rspamd:/hooks:Z
- ../data/mailcow/conf/rspamd/custom/:/etc/rspamd/custom:z
- ../data/mailcow/conf/rspamd/override.d/:/etc/rspamd/override.d:Z
- ../data/mailcow/conf/rspamd/local.d/:/etc/rspamd/local.d:Z
- ../data/mailcow/conf/rspamd/plugins.d/:/etc/rspamd/plugins.d:Z
- ../data/mailcow/conf/rspamd/lua/:/etc/rspamd/lua/:ro,Z
- ../data/mailcow/conf/rspamd/rspamd.conf.local:/etc/rspamd/rspamd.conf.local:Z
- ../data/mailcow/conf/rspamd/rspamd.conf.override:/etc/rspamd/rspamd.conf.override:Z
- rspamd-vol-1:/var/lib/rspamd:z
hostname: rspamd
<<: *dns
networks:
mailcow:
aliases:
- rspamd
php-fpm:
image: mailcow/phpfpm:1.78
restart: unless-stopped
command: "php-fpm -d date.timezone=${TZ} -d expose_php=0"
depends_on:
- redis
volumes:
- rspamd-vol-1:/var/lib/rspamd:z
- mysql-socket-vol-1:/var/run/mysqld/:z
- ../data/mailcow/hooks/phpfpm:/hooks:Z
- ../data/mailcow/web:/web:z
- ../data/mailcow/conf/rspamd/dynmaps:/dynmaps:ro,z
- ../data/mailcow/conf/rspamd/custom/:/rspamd_custom_maps:z
- ../data/mailcow/conf/sogo/:/etc/sogo/:z
- ../data/mailcow/conf/rspamd/meta_exporter:/meta_exporter:ro,z
- ../data/mailcow/conf/phpfpm/sogo-sso/:/etc/sogo-sso/:z
- ../data/mailcow/conf/phpfpm/php-fpm.d/pools.conf:/usr/local/etc/php-fpm.d/z-pools.conf:Z
- ../data/mailcow/conf/phpfpm/php-conf.d/opcache-recommended.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini:Z
- ../data/mailcow/conf/phpfpm/php-conf.d/upload.ini:/usr/local/etc/php/conf.d/upload.ini:Z
- ../data/mailcow/conf/phpfpm/php-conf.d/other.ini:/usr/local/etc/php/conf.d/zzz-other.ini:Z
- ../data/mailcow/conf/dovecot/global_sieve_before:/global_sieve/before:z
- ../data/mailcow/conf/dovecot/global_sieve_after:/global_sieve/after:z
- ../data/mailcow/assets/templates:/tpls:z
- ../data/mailcow/conf/nginx/:/etc/nginx/conf.d/:z
<<: *dns
env_file:
- ../data/secrets/mailcow.env
# environment:
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
# LOG_LINES: ${LOG_LINES:-9999}
# TZ: ${TZ}
# DBNAME: ${DBNAME}
# DBUSER: ${DBUSER}
# DBPASS: ${DBPASS}
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
# MAILCOW_PASS_SCHEME: ${MAILCOW_PASS_SCHEME:-BLF-CRYPT}
# IMAP_PORT: ${IMAP_PORT:-143}
# IMAPS_PORT: ${IMAPS_PORT:-993}
# POP_PORT: ${POP_PORT:-110}
# POPS_PORT: ${POPS_PORT:-995}
# SIEVE_PORT: ${SIEVE_PORT:-4190}
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
# IPV6_NETWORK: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
# SUBMISSION_PORT: ${SUBMISSION_PORT:-587}
# SMTPS_PORT: ${SMTPS_PORT:-465}
# SMTP_PORT: ${SMTP_PORT:-25}
# API_KEY: ${API_KEY:-invalid}
# API_KEY_READ_ONLY: ${API_KEY_READ_ONLY:-invalid}
# API_ALLOW_FROM: ${API_ALLOW_FROM:-invalid}
# COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
# SKIP_SOLR: ${SKIP_SOLR:-y}
# SKIP_CLAMD: ${SKIP_CLAMD:-n}
# SKIP_SOGO: ${SKIP_SOGO:-n}
# ALLOW_ADMIN_EMAIL_LOGIN: ${ALLOW_ADMIN_EMAIL_LOGIN:-n}
# MASTER: ${MASTER:-y}
# DEV_MODE: ${DEV_MODE:-n}
# WEBAUTHN_ONLY_TRUSTED_VENDORS: ${WEBAUTHN_ONLY_TRUSTED_VENDORS:-n}
networks:
mailcow:
aliases:
- phpfpm
sogo:
image: mailcow/sogo:1.106
restart: unless-stopped
# environment:
# DBNAME: ${DBNAME}
# DBUSER: ${DBUSER}
# DBPASS: ${DBPASS}
# TZ: ${TZ}
# LOG_LINES: ${LOG_LINES:-9999}
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
# MAILCOW_PASS_SCHEME: ${MAILCOW_PASS_SCHEME:-BLF-CRYPT}
# ACL_ANYONE: ${ACL_ANYONE:-disallow}
# ALLOW_ADMIN_EMAIL_LOGIN: ${ALLOW_ADMIN_EMAIL_LOGIN:-n}
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
# SOGO_EXPIRE_SESSION: ${SOGO_EXPIRE_SESSION:-480}
# SKIP_SOGO: ${SKIP_SOGO:-n}
# MASTER: ${MASTER:-y}
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
<<: *dns
volumes:
- ../data/mailcow/hooks/sogo:/hooks:Z
- ../data/mailcow/conf/sogo/:/etc/sogo/:z
- ../data/mailcow/web/inc/init_db.inc.php:/init_db.inc.php:Z
- ../data/mailcow/conf/sogo/custom-favicon.ico:/usr/lib/GNUstep/SOGo/WebServerResources/img/sogo.ico:z
- ../data/mailcow/conf/sogo/custom-theme.js:/usr/lib/GNUstep/SOGo/WebServerResources/js/theme.js:z
- ../data/mailcow/conf/sogo/custom-sogo.js:/usr/lib/GNUstep/SOGo/WebServerResources/js/custom-sogo.js:z
- mysql-socket-vol-1:/var/run/mysqld/:z
- sogo-web-vol-1:/sogo_web:z
- sogo-userdata-backup-vol-1:/sogo_backup:Z
env_file:
- ../data/secrets/mailcow.env
labels:
ofelia.enabled: "true"
ofelia.job-exec.sogo_sessions.schedule: "@every 1m"
ofelia.job-exec.sogo_sessions.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu sogo /usr/sbin/sogo-tool expire-sessions $${SOGO_EXPIRE_SESSION} || exit 0\""
ofelia.job-exec.sogo_ealarms.schedule: "@every 1m"
ofelia.job-exec.sogo_ealarms.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu sogo /usr/sbin/sogo-ealarms-notify -p /etc/sogo/sieve.creds || exit 0\""
ofelia.job-exec.sogo_eautoreply.schedule: "@every 5m"
ofelia.job-exec.sogo_eautoreply.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu sogo /usr/sbin/sogo-tool update-autoreply -p /etc/sogo/sieve.creds || exit 0\""
ofelia.job-exec.sogo_backup.schedule: "@every 24h"
ofelia.job-exec.sogo_backup.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu sogo /usr/sbin/sogo-tool backup /sogo_backup ALL || exit 0\""
networks:
mailcow:
<<: *sogo
ipv4_address: 10.22.1.248
aliases:
- sogo
dovecot:
image: mailcow/dovecot:1.159
restart: unless-stopped
depends_on:
- mysql
<<: *dns
cap_add:
- NET_BIND_SERVICE
volumes:
- ../data/mailcow/hooks/dovecot:/hooks:Z
- ../data/mailcow/conf/dovecot:/etc/dovecot:z
- ../data/mailcow/assets/ssl:/etc/ssl/mail/:ro,z
- ../data/mailcow/conf/sogo/:/etc/sogo/:z
- ../data/mailcow/conf/phpfpm/sogo-sso/:/etc/phpfpm/:z
- ../data/mailcow/conf/rspamd/custom/:/etc/rspamd/custom:z
- ../data/mailcow/assets/templates:/templates:z
- vmail-vol-1:/var/vmail:Z
- vmail-index-vol-1:/var/vmail_index:Z
- crypt-vol-1:/mail_crypt/:z
- rspamd-vol-1:/var/lib/rspamd:z
- mysql-socket-vol-1:/var/run/mysqld/:z
env_file:
- ../data/secrets/mailcow.env
# environment:
# DOVECOT_MASTER_USER: ${DOVECOT_MASTER_USER:-}
# DOVECOT_MASTER_PASS: ${DOVECOT_MASTER_PASS:-}
# LOG_LINES: ${LOG_LINES:-9999}
# DBNAME: ${DBNAME}
# DBUSER: ${DBUSER}
# DBPASS: ${DBPASS}
# TZ: ${TZ}
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
# MAILCOW_PASS_SCHEME: ${MAILCOW_PASS_SCHEME:-BLF-CRYPT}
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
# ALLOW_ADMIN_EMAIL_LOGIN: ${ALLOW_ADMIN_EMAIL_LOGIN:-n}
# MAILDIR_GC_TIME: ${MAILDIR_GC_TIME:-7200}
# ACL_ANYONE: ${ACL_ANYONE:-disallow}
# SKIP_SOLR: ${SKIP_SOLR:-y}
# MAILDIR_SUB: ${MAILDIR_SUB:-}
# MASTER: ${MASTER:-y}
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
# COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
ports:
- "${DOVEADM_PORT:-127.0.0.1:19991}:12345"
- "${IMAP_PORT:-143}:143"
- "${IMAPS_PORT:-993}:993"
- "${POP_PORT:-110}:110"
- "${POPS_PORT:-995}:995"
- "${SIEVE_PORT:-4190}:4190"
tty: true
labels:
ofelia.enabled: "true"
ofelia.job-exec.dovecot_imapsync_runner.schedule: "@every 1m"
ofelia.job-exec.dovecot_imapsync_runner.no-overlap: "true"
ofelia.job-exec.dovecot_imapsync_runner.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu nobody /usr/local/bin/imapsync_runner.pl || exit 0\""
ofelia.job-exec.dovecot_trim_logs.schedule: "@every 1m"
ofelia.job-exec.dovecot_trim_logs.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu vmail /usr/local/bin/trim_logs.sh || exit 0\""
ofelia.job-exec.dovecot_quarantine.schedule: "@every 20m"
ofelia.job-exec.dovecot_quarantine.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu vmail /usr/local/bin/quarantine_notify.py || exit 0\""
ofelia.job-exec.dovecot_clean_q_aged.schedule: "@every 24h"
ofelia.job-exec.dovecot_clean_q_aged.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu vmail /usr/local/bin/clean_q_aged.sh || exit 0\""
ofelia.job-exec.dovecot_maildir_gc.schedule: "@every 30m"
ofelia.job-exec.dovecot_maildir_gc.command: "/bin/bash -c \"source /source_env.sh ; /usr/local/bin/gosu vmail /usr/local/bin/maildir_gc.sh\""
ofelia.job-exec.dovecot_sarules.schedule: "@every 24h"
ofelia.job-exec.dovecot_sarules.command: "/bin/bash -c \"/usr/local/bin/sa-rules.sh\""
ofelia.job-exec.dovecot_fts.schedule: "@every 24h"
ofelia.job-exec.dovecot_fts.command: "/usr/bin/curl http://solr:8983/solr/dovecot-fts/update?optimize=true"
ofelia.job-exec.dovecot_repl_health.schedule: "@every 5m"
ofelia.job-exec.dovecot_repl_health.command: "/bin/bash -c \"/usr/local/bin/gosu vmail /usr/local/bin/repl_health.sh\""
# ulimits:
# nproc: 65535
# nofile:
# soft: 20000
postfix:
image: mailcow/postfix:1.66
restart: unless-stopped
depends_on:
- mysql
volumes:
- ../data/mailcow/hooks/postfix:/hooks:Z
- ../data/mailcow/conf/postfix:/opt/postfix/conf:z
- ../data/mailcow/assets/ssl:/etc/ssl/mail/:ro,z
- postfix-vol-1:/var/spool/postfix:z
- crypt-vol-1:/var/lib/zeyple:z
- rspamd-vol-1:/var/lib/rspamd:z
- mysql-socket-vol-1:/var/run/mysqld/:z
env_file:
- ../data/secrets/mailcow.env
# environment:
# LOG_LINES: ${LOG_LINES:-9999}
# TZ: ${TZ}
# DBNAME: ${DBNAME}
# DBUSER: ${DBUSER}
# DBPASS: ${DBPASS}
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
cap_add:
- NET_BIND_SERVICE
ports:
- "${SMTP_PORT:-25}:25"
- "${SMTPS_PORT:-465}:465"
- "${SUBMISSION_PORT:-587}:587"
<<: *dns
networks:
mailcow:
<<: *postfix
ipv4_address: 10.22.1.253
aliases:
- postfix
memcached:
image: memcached:alpine
restart: unless-stopped
env_file:
- ../data/secrets/mailcow.env
# environment:
# - TZ=${TZ}
networks:
mailcow:
aliases:
- memcached
nginx:
image: nginx:mainline-alpine
restart: unless-stopped
depends_on:
- sogo
- php-fpm
- redis
<<: *dns
command: /bin/sh -c "envsubst < /etc/nginx/conf.d/templates/listen_plain.template > /etc/nginx/conf.d/listen_plain.active &&
envsubst < /etc/nginx/conf.d/templates/listen_ssl.template > /etc/nginx/conf.d/listen_ssl.active &&
envsubst < /etc/nginx/conf.d/templates/sogo.template > /etc/nginx/conf.d/sogo.active &&
. /etc/nginx/conf.d/templates/server_name.template.sh > /etc/nginx/conf.d/server_name.active &&
. /etc/nginx/conf.d/templates/sites.template.sh > /etc/nginx/conf.d/sites.active &&
. /etc/nginx/conf.d/templates/sogo_eas.template.sh > /etc/nginx/conf.d/sogo_eas.active &&
nginx -qt &&
until ping phpfpm -c1 > /dev/null; do sleep 1; done &&
until ping sogo -c1 > /dev/null; do sleep 1; done &&
until ping redis -c1 > /dev/null; do sleep 1; done &&
until ping rspamd -c1 > /dev/null; do sleep 1; done &&
exec nginx -g 'daemon off;'"
env_file:
- ../data/secrets/mailcow.env
# environment:
# HTTPS_PORT: ${HTTPS_PORT:-443}
# HTTP_PORT: ${HTTP_PORT:-80}
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
# TZ: ${TZ}
# SKIP_SOGO: ${SKIP_SOGO:-n}
# ALLOW_ADMIN_EMAIL_LOGIN: ${ALLOW_ADMIN_EMAIL_LOGIN:-n}
# ADDITIONAL_SERVER_NAMES: ${ADDITIONAL_SERVER_NAMES:-}
volumes:
- ../data/mailcow/web:/web:ro,z
- ../data/mailcow/conf/rspamd/dynmaps:/dynmaps:ro,z
- ../data/mailcow/assets/ssl/:/etc/ssl/mail/:ro,z
- ../data/mailcow/conf/nginx/:/etc/nginx/conf.d/:z
- ../data/mailcow/conf/rspamd/meta_exporter:/meta_exporter:ro,z
- sogo-web-vol-1:/usr/lib/GNUstep/SOGo/:z
# ports:
# - "${HTTPS_BIND:-:}:${HTTPS_PORT:-443}:${HTTPS_PORT:-443}"
# - "${HTTP_BIND:-:}:${HTTP_PORT:-80}:${HTTP_PORT:-80}"
labels:
caddy: mail.marcpartensky.com, mail.marc.wf, mail.marc.tf, m.marc.wf, m.marc.tf
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.nginx.rule: Host(`mail.marcpartensky.com`)
traefik.http.routers.nginx.entrypoints: websecure
traefik.http.routers.nginx.tls.certresolver: tls
traefik.http.services.nginx.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.nginx.rule: Host(`mail.marcpartensky.com`)
traefik.http.routers.nginx.entrypoints: websecure
traefik.http.routers.nginx.tls.certresolver: tls
traefik.http.services.nginx.loadbalancer.server.port: 80
networks:
caddy:
mailcow:
<<: *nginx
ipv4_address: 10.22.1.252
aliases:
- nginx
acme:
image: mailcow/acme:1.81
restart: unless-stopped
depends_on:
- nginx
<<: *dns
env_file:
- ../data/secrets/mailcow.env
# environment:
# LOG_LINES: ${LOG_LINES:-9999}
# ACME_CONTACT: ${ACME_CONTACT:-}
# ADDITIONAL_SAN: ${ADDITIONAL_SAN}
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
# DBNAME: ${DBNAME}
# DBUSER: ${DBUSER}
# DBPASS: ${DBPASS}
# SKIP_LETS_ENCRYPT: ${SKIP_LETS_ENCRYPT:-n}
# COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
# DIRECTORY_URL: ${DIRECTORY_URL:-}
# ENABLE_SSL_SNI: ${ENABLE_SSL_SNI:-n}
# SKIP_IP_CHECK: ${SKIP_IP_CHECK:-n}
# SKIP_HTTP_VERIFICATION: ${SKIP_HTTP_VERIFICATION:-n}
# ONLY_MAILCOW_HOSTNAME: ${ONLY_MAILCOW_HOSTNAME:-n}
# LE_STAGING: ${LE_STAGING:-n}
# TZ: ${TZ}
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
# SNAT_TO_SOURCE: ${SNAT_TO_SOURCE:-n}
# SNAT6_TO_SOURCE: ${SNAT6_TO_SOURCE:-n}
volumes:
- ../data/mailcow/web/.well-known/acme-challenge:/var/www/acme:z
- ../data/mailcow/assets/ssl:/var/lib/acme/:z
- ../data/mailcow/assets/ssl-example:/var/lib/ssl-example/:ro,Z
- mysql-socket-vol-1:/var/run/mysqld/:z
networks:
mailcow:
aliases:
- acme
netfilter:
image: mailcow/netfilter:1.46
restart: unless-stopped
stop_grace_period: 30s
depends_on:
- dovecot
- postfix
- sogo
- php-fpm
- redis
privileged: true
env_file:
- ../data/secrets/mailcow.env
# environment:
# TZ: ${TZ}
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
# IPV6_NETWORK: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
# SNAT_TO_SOURCE: ${SNAT_TO_SOURCE:-n}
# SNAT6_TO_SOURCE: ${SNAT6_TO_SOURCE:-n}
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
network_mode: "host"
volumes:
- /lib/modules:/lib/modules:ro
watchdog:
image: mailcow/watchdog:1.96
restart: unless-stopped
<<: *dns
tmpfs:
- /tmp
volumes:
- rspamd-vol-1:/var/lib/rspamd:z
- mysql-socket-vol-1:/var/run/mysqld/:z
- postfix-vol-1:/var/spool/postfix:z
- ../data/mailcow/assets/ssl:/etc/ssl/mail/:ro,z
env_file:
- ../data/secrets/mailcow.env
# environment:
# IPV6_NETWORK: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
# LOG_LINES: ${LOG_LINES:-9999}
# TZ: ${TZ}
# DBNAME: ${DBNAME}
# DBUSER: ${DBUSER}
# DBPASS: ${DBPASS}
# DBROOT: ${DBROOT}
# USE_WATCHDOG: ${USE_WATCHDOG:-n}
# WATCHDOG_NOTIFY_EMAIL: ${WATCHDOG_NOTIFY_EMAIL}
# WATCHDOG_NOTIFY_BAN: ${WATCHDOG_NOTIFY_BAN:-y}
# WATCHDOG_SUBJECT: ${WATCHDOG_SUBJECT:-Watchdog ALERT}
# WATCHDOG_EXTERNAL_CHECKS: ${WATCHDOG_EXTERNAL_CHECKS:-n}
# WATCHDOG_MYSQL_REPLICATION_CHECKS: ${WATCHDOG_MYSQL_REPLICATION_CHECKS:-n}
# WATCHDOG_VERBOSE: ${WATCHDOG_VERBOSE:-n}
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
# COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
# IP_BY_DOCKER_API: ${IP_BY_DOCKER_API:-0}
# CHECK_UNBOUND: ${CHECK_UNBOUND:-1}
# SKIP_CLAMD: ${SKIP_CLAMD:-n}
# SKIP_LETS_ENCRYPT: ${SKIP_LETS_ENCRYPT:-n}
# SKIP_SOGO: ${SKIP_SOGO:-n}
# HTTPS_PORT: ${HTTPS_PORT:-443}
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
# EXTERNAL_CHECKS_THRESHOLD: ${EXTERNAL_CHECKS_THRESHOLD:-1}
# NGINX_THRESHOLD: ${NGINX_THRESHOLD:-5}
# UNBOUND_THRESHOLD: ${UNBOUND_THRESHOLD:-5}
# REDIS_THRESHOLD: ${REDIS_THRESHOLD:-5}
# MYSQL_THRESHOLD: ${MYSQL_THRESHOLD:-5}
# MYSQL_REPLICATION_THRESHOLD: ${MYSQL_REPLICATION_THRESHOLD:-1}
# SOGO_THRESHOLD: ${SOGO_THRESHOLD:-3}
# POSTFIX_THRESHOLD: ${POSTFIX_THRESHOLD:-8}
# CLAMD_THRESHOLD: ${CLAMD_THRESHOLD:-15}
# DOVECOT_THRESHOLD: ${DOVECOT_THRESHOLD:-12}
# DOVECOT_REPL_THRESHOLD: ${DOVECOT_REPL_THRESHOLD:-20}
# PHPFPM_THRESHOLD: ${PHPFPM_THRESHOLD:-5}
# RATELIMIT_THRESHOLD: ${RATELIMIT_THRESHOLD:-1}
# FAIL2BAN_THRESHOLD: ${FAIL2BAN_THRESHOLD:-1}
# ACME_THRESHOLD: ${ACME_THRESHOLD:-1}
# RSPAMD_THRESHOLD: ${RSPAMD_THRESHOLD:-5}
# OLEFY_THRESHOLD: ${OLEFY_THRESHOLD:-5}
# MAILQ_THRESHOLD: ${MAILQ_THRESHOLD:-20}
# ILQ_CRIT: ${MAILQ_CRIT:-30}
networks:
mailcow:
aliases:
- watchdog
dockerapi:
image: mailcow/dockerapi:1.41
restart: unless-stopped
security_opt:
- label=disable
# oom_kill_disable: true
<<: *dns
env_file:
- ../data/secrets/mailcow.env
# environment:
# - DBROOT=${DBROOT}
# - TZ=${TZ}
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
mailcow:
aliases:
- dockerapi
solr:
image: mailcow/solr:1.8.1
restart: unless-stopped
volumes:
- solr-vol-1:/opt/solr/server/solr/dovecot-fts/data:Z
ports:
- "${SOLR_PORT:-127.0.0.1:18983}:8983"
env_file:
- ../data/secrets/mailcow.env
# environment:
# - TZ=${TZ}
# - SOLR_HEAP=${SOLR_HEAP:-1024}
# - SKIP_SOLR=${SKIP_SOLR:-y}
networks:
mailcow:
aliases:
- solr
olefy:
image: mailcow/olefy:1.8.1
restart: unless-stopped
# environment:
# TZ: ${TZ}
# OLEFY_BINDADDRESS: 0.0.0.0
# OLEFY_BINDPORT: 10055
# OLEFY_TMPDIR: /tmp
# OLEFY_PYTHON_PATH: /usr/bin/python3
# OLEFY_OLEVBA_PATH: /usr/bin/olevba3
# OLEFY_LOGLVL: 20
# OLEFY_MINLENGTH: 500
# OLEFY_DEL_TMP: 1
env_file:
- ../data/secrets/mailcow.env
networks:
mailcow:
aliases:
- olefy
ofelia:
image: mcuadros/ofelia:latest
restart: unless-stopped
command: daemon --docker
env_file:
- ../data/secrets/mailcow.env
# environment:
# - TZ=${TZ}
depends_on:
- sogo
- dovecot
labels:
ofelia.enabled: "true"
security_opt:
- label=disable
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
mailcow:
aliases:
- ofelia
# ipv6nat:
# image: robbertkl/ipv6nat
# restart: unless-stopped
# depends_on:
# - unbound
# - mysql
# - redis
# - clamd
# - rspamd
# - php-fpm
# - sogo
# - dovecot
# - postfix
# - memcached
# - nginx
# - acme
# - netfilter
# - watchdog
# - dockerapi
# - solr
# env_file:
# - ../data/secrets/mailcow.env
# # environment:
# # - TZ=${TZ}
# security_opt:
# - label=disable
# privileged: true
# network_mode: "host"
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock:ro
# - /lib/modules:/lib/modules:ro
networks:
caddy:
external: true
mailcow:
driver: overlay
attachable: true
ipam:
config:
# - subnet: 172.22.1.0/24
- subnet: 10.22.1.1/24
# - subnet: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
# enable_ipv6: true # not allowed in docker-commpose version 3
# # driver: bridge
driver_opts:
com.docker.network.bridge.name: br-mailcow
volumes:
vmail-vol-1:
vmail-index-vol-1:
mysql-vol-1:
mysql-socket-vol-1:
redis-vol-1:
rspamd-vol-1:
solr-vol-1:
postfix-vol-1:
crypt-vol-1:
sogo-web-vol-1:
sogo-userdata-backup-vol-1:
+226
View File
@@ -0,0 +1,226 @@
# This file is auto-generated by the Mailu configuration wizard.
# Please read the documentation before attempting any change.
# Generated for compose flavor
version: "3.9"
services:
# External dependencies
# redis:
# image: redis:alpine
# restart: always
# volumes:
# - "/srv/mailu/redis:/data"
# depends_on:
# - resolver
# dns:
# - 192.168.203.254
# Core services
mailu:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2.0}
container_name: mailu
restart: unless-stopped
env_file: ../data/secrets/mailu.env
logging:
driver: journald
options:
tag: mailu-front
ports:
- "25:25"
- "465:465"
- "587:587"
- "110:110"
- "995:995"
- "143:143"
- "993:993"
# - "127.0.0.1:80:80"
# - "127.0.0.1:443:443"
# ports:
# - "127.0.0.1:25:25"
# - "127.0.0.1:465:465"
# - "127.0.0.1:587:587"
# - "127.0.0.1:110:110"
# - "127.0.0.1:995:995"
# - "127.0.0.1:143:143"
# - "127.0.0.1:993:993"
# - "127.0.0.1:80:80"
# - "127.0.0.1:443:443"
networks:
- mailu
- radicale
- caddy
volumes:
- /srv/mailu/certs:/certs
- /srv/mailu/overrides/nginx:/overrides:ro
depends_on:
- resolver
dns:
- 192.168.203.254
# labels:
# traefik.enable: "true"
# traefik.http.routers.mailu.rule: >
# Host(`mail.marcpartensky.com`)
# traefik.http.routers.mailu.entrypoints: web
# traefik.http.services.mailu.loadbalancer.server.port: 80
resolver:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2.0}
container_name: mailu-resolver
env_file: ../data/secrets/mailu.env
restart: unless-stopped
networks:
mailu:
ipv4_address: 192.168.203.254
admin:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2.0}
container_name: mailu-admin
restart: unless-stopped
env_file: ../data/secrets/mailu.env
logging:
driver: journald
options:
tag: mailu-admin
volumes:
- /srv/mailu/data:/data
- /srv/mailu/dkim:/dkim
depends_on:
- resolver
dns:
- 192.168.203.254
networks:
- redis
- mailu
- postgres
imap:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2.0}
container_name: mailu-imap
restart: unless-stopped
env_file: ../data/secrets/mailu.env
logging:
driver: journald
options:
tag: mailu-imap
volumes:
- /srv/mailu/mail:/mail
- /srv/mailu/overrides/dovecot:/overrides:ro
depends_on:
- mailu
- resolver
networks:
- mailu
dns:
- 192.168.203.254
smtp:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2.0}
container_name: mailu-smtp
restart: unless-stopped
env_file: ../data/secrets/mailu.env
logging:
driver: journald
options:
tag: mailu-smtp
volumes:
- /srv/mailu/mailqueue:/queue
- /srv/mailu/overrides/postfix:/overrides:ro
depends_on:
- mailu
- resolver
dns:
- 192.168.203.254
networks:
- mailu
oletools:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2.0}
container_name: mailu-oletools
hostname: oletools
restart: unless-stopped
networks:
- noinet
- mailu
- postgres
depends_on:
- resolver
dns:
- 192.168.203.254
antispam:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2.0}
container_name: mailu-antispam
hostname: antispam
restart: unless-stopped
env_file: ../data/secrets/mailu.env
logging:
driver: journald
options:
tag: mailu-antispam
networks:
- mailu
- noinet
- redis
- postgres
volumes:
- /srv/mailu/filter:/var/lib/rspamd
- /srv/mailu/overrides/rspamd:/overrides:ro
depends_on:
- mailu
- oletools
- resolver
dns:
- 192.168.203.254
# Optional services
webdav:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}radicale:${MAILU_VERSION:-2.0}
container_name: mailu-webdav
restart: unless-stopped
volumes:
- /srv/mailu/dav:/data
networks:
- radicale
- postgres
fetchmail:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-2.0}
container_name: mailu-fetchmail
restart: unless-stopped
env_file: ../data/secrets/mailu.env
volumes:
- /srv/mailu/data/fetchmail:/data
depends_on:
- admin
- smtp
- imap
- resolver
dns:
- 192.168.203.254
networks:
- mailu
# Webmail
networks:
mailu:
driver: bridge
ipam:
# driver: default
config:
- subnet: 192.168.203.0/24
caddy:
external: true
redis:
external: true
postgres:
external: true
radicale:
driver: bridge
noinet:
driver: bridge
internal: true
+133
View File
@@ -0,0 +1,133 @@
version: "3.9"
services:
matrix:
image: matrixdotorg/synapse
restart: unless-stopped
user: "1337:1337"
# environment:
# SYNAPSE_REPORT_STATS: "no"
# SYNAPSE_SERVER_NAME: matrix.marcpartensky.com
# SYNAPSE_ENABLE_REGISTRATION: "true"
environment:
SYNAPSE_CONFIG_PATH: /data/homeserver.yml
volumes:
- ../data/matrix:/data
# - matrix:/data
networks:
- caddy
- postgres
healthcheck:
test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"]
interval: 15s
timeout: 5s
retries: 3
start_period: 5s
labels:
traefik.enable: "true"
traefik.http.routers.matrix.rule: Host(`matrix.marcpartensky.com`)
traefik.http.routers.matrix.entrypoints: web
# traefik.http.routers.matrix.tls.certresolver: tls
# traefik.http.services.matrix.loadbalancer.server.port: 8008
# traefik.http.routers.to-matrix-wellknown.rule: Host(`marcpartensky.com`) && PathPrefix(`/.well-known/matrix`)"
# traefik.http.routers.to-matrix-wellknown.tls: true"
# traefik.http.routers.to-matrix-wellknown.tls.certresolver: letsencrypt"
# traefik.http.routers.to-matrix-wellknown.middlewares: cors-headers@docker"
# https://community.traefik.io/t/setting-up-conduit-matrix-server-with-traefik/19394
well-known:
image: nginx:latest
restart: unless-stopped
volumes:
- ../data/dendrite/well-known/conf:/etc/nginx/conf.d # the config to serve the .well-known/matrix files
- ../data/dendrite/well-known/www:/var/www/ # location of the client and server .well-known-files
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.services.well-known.loadbalancer.server.port: 80
traefik.http.routers.well-known.rule: (Host(`marcpartensky.com`) && PathPrefix(`/.well-known`)) || (Host(`marcpartensky.com`) && PathPrefix(`/.well-known`))
traefik.http.routers.well-known.entrypoints: web
# traefik.http.routers.well-known.rule: Host(`marcpartensky.com`) && PathPrefix(`/.well-known/matrix`)"
# traefik.http.routers.to-matrix-wellknown.tls: true"
# traefik.http.routers.to-matrix-wellknown.tls.certresolver: letsencrypt"
whatsapp:
container_name: whatsapp
image: dock.mau.dev/mautrix/whatsapp
restart: unless-stopped
# user: "1337:1337"
networks:
- postgres
volumes:
- ../data/matrix/whatsapp:/data
meta: # instagram
container_name: meta
image: dock.mau.dev/mautrix/meta
restart: unless-stopped
networks:
- postgres
volumes:
- ../data/matrix/meta:/data
# facebook: # messenger
# container_name: facebook
# image: dock.mau.dev/mautrix/facebook
# restart: unless-stopped
# networks:
# - postgres
# volumes:
# - ../data/matrix/facebook:/data
signal:
container_name: signal
image: dock.mau.dev/mautrix/signal
restart: unless-stopped
networks:
- postgres
volumes:
- ../data/matrix/signal:/data
discord:
container_name: discord
image: dock.mau.dev/mautrix/discord
restart: unless-stopped
networks:
- postgres
volumes:
- ../data/matrix/discord:/data
slack:
container_name: slack
image: dock.mau.dev/mautrix/slack
restart: unless-stopped
networks:
- postgres
volumes:
- ../data/matrix/slack:/data
twitter:
container_name: twitter
image: dock.mau.dev/mautrix/twitter
restart: unless-stopped
networks:
- postgres
volumes:
- ../data/matrix/twitter:/data
gmessages:
container_name: gmessages
image: dock.mau.dev/mautrix/gmessages
restart: unless-stopped
networks:
- postgres
volumes:
- ../data/matrix/gmessages:/data
messenger:
container_name: messenger
image: dock.mau.dev/mautrix/meta
restart: unless-stopped
networks:
- postgres
volumes:
- ../data/matrix/messenger:/data
networks:
caddy:
external: true
postgres:
external: true
+23
View File
@@ -0,0 +1,23 @@
version: "3.9"
services:
backup:
image: itzg/mc-backup
environment:
BACKUP_INTERVAL: "1d"
# instead of network_mode below, could declare RCON_HOST
SERVE_PORT: 25565
RCON_HOST: minecraft
RCON_PORT: 25575
PAUSE_IF_NO_PLAYER: "true"
PLAYERS_ONLINE_CHECK_INTERVAL: 1h
TZ: Europe/Paris
DEST_DIR: /backups
volumes:
# mount the same volume used by server, but read-only
- /srv/minecraft/champi:/data:ro
# use a host attached directory so that it in turn can be backed up
# to external/cloud storage
- /srv/mcbackups:/backups
# share network namespace with server to simplify rcon access
# network_mode: "service:mc"
+17
View File
@@ -0,0 +1,17 @@
version: "3.9"
services:
router:
image: ${MC_ROUTER_IMAGE:-itzg/mc-router}
environment:
# enable API
API_BINDING: ":25564"
ports:
- 25565:25565
# bind the API port to only loopback to avoid external exposure
- 127.0.0.1:25564:25564
command: --mapping=champi.marcpartensky.com=champi:25565,jungle.marcpartensky.com=jungle:25565
networks:
- minecraft
networks:
minecraft:
+43
View File
@@ -0,0 +1,43 @@
version: "3.9"
services:
mcmyadmin:
image: tekgator/docker-mcmyadmin:latest
container_name: mcmyadmin
restart: unless-stopped
# environment:
# PUID: 1001
# PGID: 1001
# EULA: 1
volumes:
- mcmyadmin:/data
ports:
- "25566:25565"
networks:
- minecraft
- caddy
# labels:
# caddy: mcadmin.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 8080}}"
# authorize.with: marc
# traefik.enable: "true"
# traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.com`)
# traefik.http.routers.mcmyadmin.entrypoints: websecure
# traefik.http.routers.mcmyadmin.tls.certresolver: tls
# traefik.http.services.mcmyadmin.loadbalancer.server.port: 8080
# deploy:
# labels:
# traefik.enable: "true"
# # traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.com`)
# traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.fr`)
# traefik.http.routers.mcmyadmin.entrypoints: websecure
# traefik.http.routers.mcmyadmin.tls.certresolver: tls
# traefik.http.services.mcmyadmin.loadbalancer.server.port: 8080
volumes:
mcmyadmin:
networks:
minecraft:
caddy:
external: true

Some files were not shown because too many files have changed in this diff Show More