680 Commits
Author SHA1 Message Date
marc d289641cc6 Merge branch 'master' into nosslh 2022-08-20 20:41:11 +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 ab953f1c2c entrypoint shell 2022-08-19 19:02:18 +02:00
marc 80fe8cbe9e valentin.env 2022-08-19 18:57:10 +02:00
marc e4e7d76592 migrating first btw 2022-08-19 18:55:34 +02:00
marc fd31196d75 tableau 2022-08-17 18:36:55 +02:00
marc 16139153a9 443 for caddy 2022-08-17 18:32:09 +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 1ba21cb4ae docker-api 2022-03-06 17:22:19 +01:00
marc 02618af131 default username 2022-03-06 17:06:07 +01:00
marc 471a835135 fix oxivia 2022-03-06 16:58:26 +01:00
marc d17b564c9d fix 2022-03-06 16:56:23 +01:00
marc bbc80b24be vps.txt 2022-03-06 16:53:39 +01:00
marc 5eec1ed40f fix name 2022-03-06 16:50:27 +01:00
marc cf4b67c8e7 general clean 2022-03-06 16:48:42 +01:00
marc e12576a01a fix registry 2022-03-06 16:46:38 +01:00
marc b12ac2b233 authent 2022-03-06 16:46:05 +01:00
marc df5e820496 fix 2022-03-06 16:30:27 +01:00
marc 52e0602c48 networks 2022-03-06 16:29:21 +01:00
marc 7c10dce519 mapping 2022-03-06 16:27:09 +01:00
marc 053e21aa2f caddy support 2022-03-06 16:26:25 +01:00
marc ac67445f47 authentik 2022-03-06 16:24:13 +01:00
marc 0c40d6ccc7 mapping 2022-03-06 02:20:09 +01:00
marc 01c20b7dc2 cleaned open web calendar 2022-03-06 02:18:51 +01:00
marc a8b4c7ff48 open-web-calendar 2022-03-06 02:18:14 +01:00
marc 85f770353f cleaned ialab 2022-03-06 02:13:40 +01:00
marc 927cfe0ca4 depends on caddy 2022-03-06 02:11:03 +01:00
marc bdccc7d82c depends on caddy 2022-03-06 02:06:44 +01:00
marc 7e7d724854 clean registry 2022-03-06 02:05:53 +01:00
marc a6be409eb6 cleaned oxivia 2022-03-06 02:04:07 +01:00
marc 52fb92411f cleaned website 2022-03-06 01:52:27 +01:00
marc 79024c9f60 no argument 2022-03-06 01:50:54 +01:00
marc de8033affb less indent 2022-03-06 01:48:06 +01:00
marc f0c61d4779 cleaned docker kit 2022-03-06 01:29:20 +01:00
marc 1dff54e70b bye bridge 2022-03-06 01:28:31 +01:00
marc 19d8145043 fix 2022-03-06 01:28:05 +01:00
marc b442d0e3d3 .. 2022-03-06 01:26:40 +01:00
marc 9f7afe6b98 mongo express 2022-03-06 01:24:47 +01:00
marc eb67477449 docker-kit 2022-03-06 01:22:38 +01:00
marc 4f8e93b76b fuck user specific config 2022-03-06 00:48:22 +01:00
marc 2aec5a7e96 -m 750 2022-03-06 00:43:51 +01:00
marc 1298a0dcaf fix 2022-03-06 00:40:14 +01:00
marc 225089bfbd trying make install setup 2022-03-06 00:39:27 +01:00
marc 01c2d576e1 ialab 2022-03-06 00:23:12 +01:00
marc 395d4607d2 ialab 2022-03-05 23:49:22 +01:00
marc 105bbac4ef data 2022-03-05 23:40:12 +01:00
marc 519d9f1904 forgot s 2022-03-05 23:32:53 +01:00
marc 9f5f54063d docker-compose.yml in stacks 2022-03-05 23:30:01 +01:00
marc 8bae2213c3 legacy 2022-03-05 23:29:26 +01:00
marc 98a2862ddf clever merge 2022-03-05 23:27:54 +01:00
marc a74495111b dont log 2022-03-05 23:14:24 +01:00
marc 1a1a2b4a3a eval 2022-03-05 23:03:05 +01:00
marc e44d3ed58c docker-compose too 2022-03-05 23:02:33 +01:00
marc b2e07ae91d stacks 2022-03-05 23:02:07 +01:00
marc 79d4397c66 merge 2022-03-05 22:59:25 +01:00
marc 9c60b1f1fc bin 2022-03-05 22:52:58 +01:00
marc 8f45091819 merge.py 2022-03-05 22:52:14 +01:00
marc 90bc4f91e7 fix 2022-03-05 22:18:32 +01:00
marc b547bb877c dood 2022-03-05 22:15:07 +01:00
marc 64ed06aaf8 env 2022-03-05 22:12:54 +01:00
marc 774433b508 txt file as input 2022-03-05 22:08:18 +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 c985b43237 nginx 2022-03-05 16:30:42 +01:00
marc bf35024b28 nginx 2022-03-05 16:28:17 +01:00
marc 18c5a6b667 parent data folder 2022-03-05 16:22:38 +01:00
marc 7443039354 swarm mode or docker-compose 2022-03-05 15:34:49 +01:00
marc 65b0f97b5c moved oxiva 2022-03-05 15:24:38 +01:00
marc b2a7afce17 oxivia.yml 2022-03-05 15:11:55 +01:00
marc b436e6eda7 wordpress.yml 2022-03-05 06:46:19 +01:00
marc df294dd137 calendar 2022-03-05 06:41:27 +01:00
marc 3847b0d61e calendar 2022-03-05 06:41:15 +01:00
marc 81b333235d ialab.yml 2022-03-05 06:39:53 +01:00
marc 8215766d39 jupyterhub 2022-03-05 06:36:51 +01:00
marc 12565e35f3 jupyterlab.yml 2022-03-05 06:35:47 +01:00
marc 67ee42083b mongo 2022-03-05 06:32:27 +01:00
marc 796ad01b9e deleted useless networks 2022-03-04 11:03:56 +01:00
marc 0ec4274285 pandoc 2022-03-04 01:01:05 +01:00
marc a9a38505a0 servant.yml 2022-03-04 00:59:38 +01:00
marc eee3fa41b5 discord 2022-03-04 00:57:51 +01:00
marc ec7438ddfe mongo 2022-03-04 00:56:03 +01:00
marc 683e2dab16 bot 2022-03-03 23:37:45 +01:00
marc 5485bb3f7d discord-bot 2022-03-03 23:37:07 +01:00
marc 1f78f292a0 discord-bot 2022-03-03 23:36:55 +01:00
marc c4ed8629b2 sslh 2022-03-03 23:35:00 +01:00
marc 1561a83155 services 2022-03-03 23:32:10 +01:00
marc ec217851e2 stack 2022-03-03 23:31:09 +01:00
marc f708b9060d services 2022-03-03 23:30:01 +01:00
marc d22b2074af setup.sh 2022-03-03 23:29:23 +01:00
marc d2ee7ddf47 up.sh 2022-03-03 23:21:05 +01:00
marc b617b39870 registry.yml 2022-03-03 22:49:01 +01:00
marc 934ac113fd portainer.yml 2022-03-03 22:48:01 +01:00
marc b009a78180 website.yml 2022-03-03 22:47:04 +01:00
marc 84c9c787ab caddy.yml 2022-03-03 22:45:14 +01:00
marc 6a8c2c6127 vps folder 2022-03-03 22:45:03 +01:00
marc bed1b4201e update 2022-03-03 21:57:01 +01:00
marc 5d9bbb47f0 test 2022-03-03 21:52:57 +01:00
marc fadbacec91 deploy path 2022-03-03 21:28:30 +01:00
marc 226faa5366 git/docker 2022-03-03 21:26:00 +01:00
marc d59dfff7dd ssh host 2022-03-03 21:23:53 +01:00
marc 456998e63b swarm 2022-03-03 21:21:56 +01:00
marc 9eab510975 lab 2022-03-03 21:11:45 +01:00
marc cd6ef5917a removed healthcheck from mongo 2022-03-03 09:10:03 +01:00
marc da02278c9c ldap env file 2022-03-03 01:05:41 +01:00
marc 6c4f8e9252 ldap.env 2022-03-03 01:01:22 +01:00
marc 9ddc4fcbe6 636 2022-03-03 00:58:28 +01:00
marc b82f4b18ff entrypoint 2022-03-03 00:45:52 +01:00
marc 66623dacea wtf var log 2022-03-03 00:43:26 +01:00
marc 3569754088 bye website dev 2022-03-03 00:42:42 +01:00
marc 1ab7e8de2f vol 2022-03-03 00:13:40 +01:00
marc 339a9db1f6 less network conf 2022-03-03 00:13:20 +01:00
marc 74fed54f3d pritunl 2022-03-03 00:11:10 +01:00
marc cf5896a640 true true 2022-03-02 23:53:10 +01:00
marc 6a010781a5 true 2022-03-02 23:51:58 +01:00
marc e2ffeab158 fix true 2022-03-02 23:51:03 +01:00
marc 849bd680b4 trying without port 80 2022-03-02 23:49:38 +01:00
marc 8ada212d8f badge 2022-03-02 18:53:30 +01:00
marc 4d33340413 auth.marcpartensky.com 2022-03-02 18:45:27 +01:00
marc 7a0acbae7b docker-swarm-deploy 2022-03-02 18:37:08 +01:00
marc 6c3ce63c23 ldap 2022-03-02 18:25:08 +01:00
marc 06cec5866e rancher 2022-03-02 18:17:19 +01:00
marc 03d1b04a1d gitlab 2022-03-02 18:17:00 +01:00
marc cee2d0f075 jenkins 2022-03-02 18:16:31 +01:00
marc 906a9347be matrix etherpad 2022-03-02 18:15:42 +01:00
marc 65fb18cb1c pandoc 2022-03-02 18:14:53 +01:00
marc 0d66be0495 cleaned nextcoud 2022-03-02 18:13:29 +01:00
marc dd414440d8 cleaned oxivia 2022-03-02 18:10:56 +01:00
marc 85e3630f26 cleaned registry 2022-03-02 18:08:50 +01:00
marc 1648f59018 bye valentin 2022-03-02 18:06:43 +01:00
marc 35167a5d1f bye old thaiwara 2022-03-02 18:06:17 +01:00
marc 5f58cf6787 http 2022-03-02 18:00:25 +01:00
marc 35cbb4584b dont deal with https 2022-03-02 17:57:18 +01:00
marc 8921f435ae server hostname 2022-03-02 17:52:36 +01:00
marc dafc5d6239 no starttls 2022-03-02 17:48:27 +01:00
marc 5033dae87b dockerhost 2022-03-01 16:23:49 +01:00
marc 55cb64dfd5 contabo 2022-03-01 16:17:11 +01:00
marc 397457cbab better order 2022-03-01 16:15:46 +01:00
marc b487a902ba jupyterhub 2022-03-01 16:06:44 +01:00
marc b281bef3df jupyterhub 2022-03-01 15:59:47 +01:00
marc e7d4d60362 registry made right 2022-03-01 15:58:06 +01:00
marc 9576ce9600 registry is back 2022-03-01 15:56:17 +01:00
marc e592ded31a fix bad indent 2022-03-01 15:39:56 +01:00
marc 2c0225b57d matrix is secret 2022-03-01 15:39:10 +01:00
marc a9034507ae matrix stuf 2022-03-01 15:38:44 +01:00
marc 25458ffe3b jupyterhub 2022-03-01 15:37:14 +01:00
marc 3e38ea66c0 no 2022-02-27 16:37:21 +01:00
marc 887aa3f071 matrix update 2022-02-27 16:36:04 +01:00
marc 0b44e47fc6 ignoring mx puppet discord 2022-02-27 15:28:50 +01:00
marc 02dc4addd8 mx puppet discord 2022-02-27 15:26:27 +01:00
marc c030db86a9 network 2022-02-27 02:27:14 +01:00
marc 6e31a30715 2 cpus 2022-02-27 00:48:18 +01:00
marc 5468dceaa7 restrict gitlab 2022-02-26 00:17:05 +01:00
marc 7081bfb9c1 xmrchain 2022-02-25 17:12:46 +01:00
marc a1af35fd8c volume 2022-02-25 17:12:18 +01:00
marc 089c3fdfb7 fuck monero miner config 2022-02-25 17:11:58 +01:00
marc b5175252cf monero daemon 2022-02-25 17:09:16 +01:00
marc db2a64e153 monero daemon 2022-02-25 15:54:11 +01:00
marc 94a57de8ba bye wordpress 2022-02-24 01:39:03 +01:00
marc c6de0197a5 calendar 2022-02-24 01:38:14 +01:00
marc c89853d620 mongo express 2022-02-24 01:36:26 +01:00
marc 45d1c32902 seafile 2022-02-24 01:32:41 +01:00
marc a304124ee5 prison the daemon 2022-02-24 01:19:36 +01:00
marc 7204e881c5 volumes 2022-02-24 01:09:56 +01:00
marc 65fc2deaee calm gitlab 2022-02-24 01:08:27 +01:00
marc 32e7e6e20e jenkins 2022-02-24 01:01:12 +01:00
marc 46ef155acf free the miners 2022-02-24 00:54:41 +01:00
marc 7d39696084 calm down the daemon 2022-02-24 00:37:20 +01:00
marc 51dcc5e474 bye .d 2022-02-24 00:29:01 +01:00
marc 487abdc4e6 string 2022-02-24 00:28:11 +01:00
marc fd33ad6cdb no links 2022-02-24 00:27:17 +01:00
marc 163b475163 ldap volume + network 2022-02-24 00:22:10 +01:00
marc 613f6cae9d ldap 2022-02-24 00:20:59 +01:00
marc 5532aae308 funding 2022-02-23 23:56:33 +01:00
marc 6b0fffd01a tried to clean portainer 2022-02-23 23:40:36 +01:00
marc d20843f171 no build anymore 2022-02-23 23:38:14 +01:00
marc 3e2932bd60 double quotes 2022-02-23 23:23:29 +01:00
marc 212d7c2b26 websocket upstream 2022-02-23 23:22:05 +01:00
marc ced054fc7e breef 2022-02-23 23:19:31 +01:00
marc c91fc2d60b yaml config for beef 2022-02-23 22:51:52 +01:00
marc 9ee3bb5271 ignoring some beef 2022-02-23 22:51:04 +01:00
marc 98f77707b0 caddy network right 2022-02-23 19:28:22 +01:00
marc c1a71af69a some great beef volume 2022-02-23 19:15:32 +01:00
marc 4757a67bbd changed beef 2022-02-23 19:14:45 +01:00
marc f5388cfb49 fix ressources 2022-02-23 18:42:34 +01:00
marc 2deb507552 ressources 2022-02-23 18:41:35 +01:00
marc 8117b56a77 website and caddy first before all 2022-02-23 18:37:13 +01:00
marc 91b51025ec limit monero daemon 2022-02-23 18:34:08 +01:00
marc 46538106a8 novnc_fedora 2022-02-23 17:32:28 +01:00
marc 52e3e07088 monero_miner 2022-02-23 17:31:42 +01:00
marc 9bfafd1c0b monero daemon 2022-02-23 17:20:00 +01:00
marc 2bcea6a9c8 novnc-debian 2022-02-21 17:36:16 +01:00
marc 9216fe1f49 no entrypoint 2022-02-21 17:28:13 +01:00
marc 3d88f314bb vnc 2022-02-21 17:27:53 +01:00
marc b0693e2040 good image 2022-02-21 17:21:29 +01:00
marc b67d09d1d1 entryopint 2022-02-21 17:20:51 +01:00
marc e9bd448083 novnc arch i3 2022-02-21 17:19:24 +01:00
marc c9ad155b82 tower 2022-02-21 16:57:14 +01:00
marc 22dc3672b5 beef 2022-02-21 01:40:47 +01:00
marc 6f8440be32 telport 2022-02-21 01:37:07 +01:00
marc 546ead7187 teleport 2022-02-21 01:31:02 +01:00
marc ca8c11ffd7 monero miner 2022-02-20 20:57:51 +01:00
marc 2476422bec matrix 2022-02-20 20:15:33 +01:00
marc d3e7a42078 etherpad 2022-02-20 20:02:05 +01:00
marc 3e794a50f1 jenkins 2022-02-20 19:04:10 +01:00
marc 92455952ed rancher 2022-02-20 19:00:47 +01:00
marc 79f28c1dee removed useless 2022-02-20 18:57:25 +01:00
marc adfa0c9290 seafile 2022-02-20 18:57:10 +01:00
marc 3f09480fc9 fail2ban 2022-02-20 02:07:10 +01:00
marc 2ef40073d2 not overloading entrypoint for pandoc 2022-02-20 01:59:39 +01:00
marc 6b007d1a30 nextcloud too 2022-02-20 01:54:30 +01:00
marc 88bf9117a4 fix name 2022-02-20 01:51:21 +01:00
marc 7972b84503 fix naming 2022-02-20 01:49:18 +01:00
marc e4ccb07e14 forgot network 2022-02-20 01:45:04 +01:00
marc 3b7b71853b fix 2022-02-20 01:42:38 +01:00
marc 963745bd5a seafile 2022-02-20 01:04:00 +01:00
marc 20c95de427 seafile 2022-02-20 01:01:25 +01:00
marc 7c7061fbf7 docker socket mountd as bind mount inside novnc container 2022-02-16 14:03:30 +01:00
marc 35779c76e5 novnc 2022-02-16 13:48:37 +01:00
marc f7413b3060 commented wordpress 2022-02-14 01:14:37 +01:00
marc b7e4ffaa8f novnc var 2022-02-07 15:37:30 +01:00
marc a2a3d062bd 5900 2022-02-01 15:35:16 +01:00
marc 6e120feee2 duplicati test 2022-02-01 15:05:48 +01:00
marc b21e6bb557 vps.yml 2022-01-28 17:03:12 +01:00
marc 72cca72097 pritunl config that works 2022-01-21 23:24:46 +01:00
marc b13a5a2891 mcmyadmin port 2022-01-18 13:29:42 +01:00
marc fc8267c0f1 networks caddy tower.yml 2022-01-18 11:01:50 +01:00
marc 71ad5e5410 fix not well formed 2022-01-15 19:39:21 +01:00
marc 4fdfcae901 commented healthcheck 2022-01-15 19:30:15 +01:00
marc 60edd83103 healthchecks 2022-01-11 16:01:36 +01:00
marc afbf297c88 test 2022-01-11 13:59:54 +01:00
marc d2931aa17d cleaning containers 2022-01-11 13:59:14 +01:00
marc 466b26cd67 back to overloading the entrypoint 2022-01-11 04:00:27 +01:00
marc 124a5ea52a pgweb 2022-01-11 03:56:26 +01:00
marc 3ccc2e395b interactive does not exist 2022-01-09 23:37:59 +01:00
marc c4726def00 rancher port 2022-01-09 23:37:18 +01:00
marc f00265a248 minikube and rancher 2022-01-09 23:36:45 +01:00
marc 2522a96747 setup 2022-01-09 22:48:57 +01:00
marc bf7664a492 rancher/server 2022-01-09 22:43:33 +01:00
marc 372b67ca2d 8080 2022-01-09 22:15:20 +01:00
marc f6a55caa48 tried rancher 2022-01-09 22:14:09 +01:00
marc 4775e36f72 caddyfile 2022-01-02 20:14:11 +01:00
marc 9c8d739665 commented pritunl 2021-12-31 01:33:16 +01:00
marc eb2591af35 nextcloud volume 2021-12-31 01:12:30 +01:00
marc a20bc37cd8 trying deploy and getting rid of pritunl in vps.yml 2021-12-30 23:29:07 +01:00
marc 67311af9c0 expose http server of discord bot under firewall 2021-12-26 02:56:28 +01:00
marc dc85a0b53a tmate unix sock at /var/run/tmate.sock 2021-12-25 19:55:25 +01:00
marc 4860f6702e no environment variables when build the image 2021-12-24 23:56:27 +01:00
marc ae8f306f31 bye useless stack.yml 2021-12-21 22:30:31 +01:00
marc 169d0c4215 no-new-privileges:true 2021-12-20 02:19:15 +01:00
marc 539286bd2a why 2021-12-13 03:04:04 +01:00
marc 23f48c7925 added Caddyfile the right way 2021-12-13 02:22:14 +01:00
marc 858e3aa61b commenting unused services 2021-12-13 02:11:58 +01:00
marc ccd7fd0174 bye box 2021-12-10 11:01:21 +01:00
marc cd165019c3 tmate 2021-12-10 11:00:21 +01:00
marc 2013b69228 swarm.marcpartensky.com 2021-11-29 02:26:16 +01:00
marc aca70df681 attachable? 2021-11-29 02:14:17 +01:00
marc 4a6051f9fb marcpartensky honeypot 2021-11-29 02:01:41 +01:00
marc afdd9ba7c7 tried pritunl 2021-11-29 00:06:35 +01:00
marc 826a456b00 changing entrypoint once again 2021-11-26 22:42:53 +01:00
marc 0796cbbae0 bye container names that do not work in swarm 2021-11-22 23:43:30 +01:00
marc 4c8ead53c0 pandoc listens everywhere 2021-11-22 23:35:24 +01:00
marc 033b2886b7 wtf pritunl 2021-11-22 23:29:49 +01:00
marc 70c7613c89 focalboard 8000 2021-11-22 22:38:07 +01:00
marc 6480448695 valid confi 2021-11-22 22:34:03 +01:00
marc 0e50b6e2e4 pritunl 2021-11-22 22:10:18 +01:00
marc 0fbb10c358 other pritunl image 2021-11-22 22:07:19 +01:00
marc b89c87f5ca apt + focalboard 2021-11-22 18:31:27 +01:00
marc af183492cc focalboard not freeboard 2021-11-22 18:29:45 +01:00
marc 94bd257229 freeboard 2021-11-22 18:12:23 +01:00
marc 1f4bfa6c93 bye space 2021-11-21 20:34:12 +01:00
marc eca03e6a44 apt-repo-server 2021-11-21 20:33:09 +01:00
marc 5f33716038 tmatedb 2021-11-19 09:37:38 +01:00
marc e3ed13ce56 tmate network 2021-11-19 09:37:21 +01:00
marc 00fdcae63e pritunl docker-compose 2021-11-19 09:36:46 +01:00
marc 3e314c4bce salut 2021-11-15 20:17:41 +01:00
marc 063efcb3f4 tmate config 2021-11-15 09:54:57 +01:00
marc 2a13935c6c pritunl is sys admin 2021-11-15 02:05:22 +01:00
marc 8f94c1a6a9 healthcheck 2021-11-15 01:25:09 +01:00
marc 22dee54811 all interfaces 2021-11-15 01:21:27 +01:00
marc 61a7a19134 trying command 2021-11-15 01:17:59 +01:00
marc 7d0bba67fe forgot networks 2021-11-15 01:05:16 +01:00
marc 6eb04e91ab do not expose for no reason 2021-11-15 00:59:11 +01:00
marc 171de689f6 makefile 2021-11-15 00:57:41 +01:00
marc a1e68dc934 nextcloud maria volume 2021-11-15 00:52:48 +01:00
marc 494d54063f ambiance theme 2021-11-15 00:48:01 +01:00
marc 018530f679 no var 2021-11-15 00:43:21 +01:00
marc c73293f16b mongo 2021-11-15 00:42:25 +01:00
marc c348a88f62 ok 2021-11-15 00:38:26 +01:00
marc 8fc82a7b74 mongo 2021-11-15 00:02:37 +01:00
marc a0c23a1092 tmate 2021-11-14 23:57:17 +01:00
marc 99a9247762 registry auth 2021-11-14 23:42:36 +01:00
marc 16183075b7 really trying to make tmate work 2021-11-14 23:42:22 +01:00
marc c59b41d3f5 has no websocket 2021-11-14 23:36:43 +01:00
marc 32db73808a dockercompose 2021-11-14 23:29:51 +01:00
marc bdb96a80ba trying updated image 2021-11-14 23:21:21 +01:00
marc cd3a22debd trying again 2021-11-14 23:12:01 +01:00
marc c87f67e793 cap sys admin 2021-11-14 23:00:35 +01:00
marc c8c2cb1cee behind proxy 2021-11-14 22:50:12 +01:00
marc 19809e0021 bye the prod 2021-11-14 22:21:08 +01:00
marc 1b4125b99e tmate config done 2021-11-14 22:14:45 +01:00
marc 3cf65f4cb0 executable 2021-11-14 22:10:13 +01:00
marc 5f2bf2a53c tmate create keys 2021-11-14 22:09:53 +01:00
marc 5f697ef42e fix mistake 2021-11-14 21:45:28 +01:00
marc e879c7578d bye jenkins data 2021-11-14 21:35:21 +01:00
marc 27065fbe1d bye website entrypoint 2021-11-14 21:05:04 +01:00
marc 36c64662a5 deploy the stack 2021-11-14 20:59:29 +01:00
marc d92b35ea90 dockerfile 2021-11-14 14:53:14 -05:00
marc 71000c15f1 gitlabci 2021-11-14 20:39:57 +01:00
marc d3ce961559 wordpress arnaud volume 2021-11-14 14:27:26 -05:00
marc 35cb844733 wordpress business 2021-11-14 14:26:25 -05:00
marc d885f72a03 mongo server more precise 2021-11-14 20:23:44 +01:00
marc 771db07cc9 elasticsearch 2021-11-14 14:20:08 -05:00
marc de721af6f8 mongo express 2021-11-14 20:17:17 +01:00
marc 5cec195f09 postgres 2021-11-14 20:13:58 +01:00
marc bb32275e20 bye wordpress alex 2021-11-14 19:45:51 +01:00
marc 95654eee43 string 2021-11-14 18:48:07 +01:00
marc 66f1a8b905 not signign 2021-11-14 18:46:46 +01:00
marc d71493bef8 wordpres changed 2021-11-14 17:51:13 +01:00
marc 7f06554109 vps.yml 2021-11-14 17:50:44 +01:00
marc 02934a9714 done getting rid of bind mounts 2021-11-14 11:30:54 -05:00
marc 45d920c278 lots of changes 2021-11-14 11:30:54 -05:00
marc f4485e65d9 pritunl_zero 2021-11-12 18:09:46 +01:00
marc a554348ebb ankharak 2021-11-06 22:31:23 +01:00
marc 78ecce7dda messing with ports and privileges 2021-11-06 13:46:37 +01:00
marc bb8d154a1e pritunl config that works 2021-11-05 12:24:05 +01:00
marc 13339764b2 swarmpit 2021-11-04 23:01:25 +01:00
marc 2afcb256d1 deploy command in makefile 2021-11-03 15:11:10 +01:00
marc 9b60b1ebf0 novnc volume 2021-10-29 03:23:13 -04:00
marc b8ec47be56 commenting ialab + gitlab because too expensive in cpu and ram usage 2021-10-27 10:47:28 +02:00
marc f67a6e1857 website entrypoint.sh 2021-10-25 18:22:13 +02:00
marc 9423988512 adding networks to vps.yml 2021-10-23 12:56:24 +02:00
marc 4df0caebd8 no bind_mounts true volume 2021-10-23 02:18:45 +02:00
marc 947b1656ae trying to fix vps stack 2021-10-23 01:24:28 +02:00
marc cd62d7915d tower.yml 2021-10-22 15:53:37 -04:00
marc 829e2c63e4 lighter vps conf 2021-10-22 21:51:43 +02:00
marc f4c02b1af1 novnc 2021-10-22 13:26:04 -04:00
marc 97cb705e3d deleted searx data 2021-10-22 12:53:11 +02:00
marc b3d1b43590 new secret key 2021-10-21 19:47:56 +02:00
marc 2a86d7500d vps.yml 2021-10-21 19:37:42 +02:00
marc 2c1a3697bd bye container_name 2021-10-20 13:45:13 +02:00
marc d6269e7941 gitlabing the gitlab 2021-10-20 13:39:22 +02:00
marc 13fefd3bf2 reverse proxy to true 2021-10-20 13:35:47 +02:00
marc c51cf9cbb5 adding first gitlab config 2021-10-17 10:03:51 -04:00
marc 39316455dd tmating some tmate 2021-10-17 08:57:42 -04:00
marc 47f869c2ef working pritunl config for vps 2021-10-14 14:41:48 +02:00
marc 87096a131e changed port to compatible ones pritunl 2021-10-14 13:19:06 +02:00
marc a8d7cdb11d added port 443 2021-10-11 07:48:31 -04:00
marc 9f1a21a08a dépannage d'anaelle 2021-10-09 22:25:32 +02:00
marc f68d8ab1a8 pritunl 80 2021-10-09 16:24:14 -04:00
marc b58264aaba pritunl 2021-10-09 16:01:57 -04:00
marc 63b497df1c phpmyadmin alex 2021-10-08 02:19:30 +02:00
marc f8469174b0 dc ps 2021-10-08 00:31:37 +02:00
marc 3413e11e6f opening port 3000 2021-10-02 10:09:45 -04:00
marc f692355653 trying to change ssh keys path 2021-10-02 09:20:38 -04:00
marc 5875bc7284 changed port 2021-10-02 08:59:28 -04:00
marc 6477ecac9b no links 2021-09-29 10:36:51 +02:00
marc 8bf29de4d1 added volume and port to discord bot even though port sharing is temporary 2021-09-15 18:24:14 +02:00
marc 43e7e4486c trying to setup nextcloud 2021-09-14 22:55:24 +02:00
marc 2e53d25462 fix nextcloud volumes 2021-09-01 15:29:47 +02:00
marc f4f0e2807e valid nextcloud config 2021-09-01 15:28:14 +02:00
marc 18188f7047 nextcloud with hidrive volume 2021-09-01 15:27:35 +02:00
marc 225088ecb0 trying to migrate to one mysql database 2021-09-01 15:17:28 +02:00
marc 1b5ccb86e2 logging caddy 2021-08-22 22:42:57 +02:00
marc e7b485c0e9 updated gitea 2021-08-22 20:28:43 +02:00
marc 884f7fd1b5 links docker api 2021-08-22 14:08:54 +00:00
marc bd09144ae8 cleaned 2021-08-22 14:06:52 +00:00
marc 0986a544be using /root instead of /root 2021-08-22 13:55:53 +00:00
marc 6653823fa5 tried to fix things for kompose 2021-08-22 13:46:52 +00:00
marc 83bcaeeebf no esclave 2 2021-08-22 12:45:36 +00:00
marc 7f217a03f1 mounting mcvnc_usr 2021-08-20 13:07:07 +02:00
marc 2df1fd1523 fixed minecraft aventure 2021-08-20 12:41:39 +02:00
marc bf73c033be minecraft aventure 2021-08-20 12:36:19 +02:00
marc c28bb5e784 trying to use registries 2021-08-14 21:15:01 +00:00
marc 26cba7455c no pipfile or requirements.txt 2021-08-14 16:13:56 +02:00
marc b439d91d0e updated requirements.txt to pipfile.lock 2021-08-14 14:09:44 +00:00
marc 82de650b79 enabling snooper to disable telemetry 2021-08-14 16:02:49 +02:00
marc 45aedd9b18 mcmyadmin 2021-08-09 21:11:12 +02:00
marc f247d44230 updated caddy 2021-08-09 11:47:48 +00:00
marc fda4e23f56 different bind mount for 1.17 2021-08-09 00:08:57 +02:00
marc 006d03d73b minecraft 2 worlds 2021-08-08 23:58:36 +02:00
marc d978697dad bind mounts 2021-08-08 21:06:41 +02:00
marc 62684f48ab valentin.marcpartensky.com 2021-08-05 21:24:47 +00:00
marc acf8946506 openldap 2021-08-04 15:18:01 +00:00
marc 56d184abd6 ram usage from 2g to 1g for minecraft server 2021-08-04 00:22:20 +00:00
marc 35ea64604f wordpress arnaud 2021-08-03 23:39:53 +00:00
marc 1c99af96d5 website dev 2021-08-03 12:38:10 +00:00
marc 0e2d47097f not init-letsencrypt.sh 2021-08-02 01:52:20 +00:00
marc 0461e0c08c giving more build context to todolist containers 2021-08-01 23:58:51 +00:00
marc 5a10741a91 exporting data.tgz.gpg 2021-08-01 22:40:18 +00:00
marc 948d189305 ssh honeypot 2021-08-01 22:26:36 +00:00
marc 4ea3335b19 thai wara 2021-08-01 21:21:50 +00:00
marc 2af6a89315 using caddy as reverse proxy cuz it does not fail me 2021-08-01 16:34:25 +00:00
101 changed files with 10780 additions and 604 deletions
+6
View File
@@ -0,0 +1,6 @@
patreon: marcpartensky
github: marcpartensky
custom:
# - monero:43J2XmRtjDPRLD35UsYGH2AZamFBQz7dt4VdvZXVm3SuadTrvcoXUXBRUNHqukFte23Q5TWXqhbwaLJJgoVQzzbe2AJDANQ
- https://paypal.me/marcpartensky
- https://buymeacoffee.com/marcpartensky
@@ -0,0 +1,26 @@
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
+12 -1
View File
@@ -1,6 +1,17 @@
docker-compose.yml
data/openvpn
data/secrets
data/certbot
data/traefik
data/caddy
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.tar.gz
services/template.yml
+18
View File
@@ -0,0 +1,18 @@
image: docker:stable
stages:
- deploy
services:
- docker:dind
before_script:
- apk update
- apk add py-pip python3-dev libffi-dev openssl-dev gcc libc-dev make
- pip install docker-compose
deploy_app:
stage: deploy
script:
- docker-compose down
- docker-compose up -d
+11
View File
@@ -0,0 +1,11 @@
FROM docker:dood
# RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# RUN chmod +x /usr/local/bin/docker-compose
COPY docker-compose.yml docker-compose.yml
COPY vps.yml vps.yml
RUN docker stack deploy -c vps.yml vps
ENTRYPOINT ["docker"]
CMD ["service", "ls"]
+15 -7
View File
@@ -1,8 +1,16 @@
compose:
cat ./env/vps.txt | xargs ./bin/docker-setup.sh
swarm:
cat ./env/vps.txt | STACK=vps xargs ./bin/docker-setup.sh
merge:
./bin/docker-setup.sh merge vps
mswarm: merge
docker stack deploy -c stacks/docker-compose.yml vps
down:
docker stack rm vps
export:
tar cvzf /tmp/docker_data.tgz /root/docker/data
gpg --encrypt --recipient 'marc.partensky@gmail.com' /tmp/docker_data.tgz
mv /tmp/docker_data.tgz.gpg .
rm /tmp/docker_data.tgz
clean:
rm ./docker_data.tgz.gpg
rm /tmp/docker_data.tgz
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
+37 -10
View File
@@ -1,3 +1,5 @@
[![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
## Domains
@@ -9,17 +11,18 @@
- https://cloud.marcpartensky.com
- https://wordpress.marcpartensky.com
- https://git.marcpartensky.com
- https://business.marcpartensky.com
- https://gitlab.marcpartensky.com
- https://todolist.marcpartensky.com
- https://api.todolist.marcpartensky.com
- https://marc.wp.marcpartensky.com
- https://alex.wp.marcpartensky.com
- https://uml.marcpartensky.com
- https://grafana.marcpartensky.com
- https://prometheus.marcpartensky.com
- https://dns.marcpartensky.com
<!-- - https://dev.marcpartensky.com -->
<!-- - https://box.marcpartensky.com -->
- https://swarm.marcpartensky.com
- https://auth.marcpartensky.com
- https://seafile.marcpartensky.com
- https://mail.marcpartensky.com
- https://arch.marcpartensky.com
<!-- - https://dns.marcpartensky.com -->
<!-- - https://glou.marcpartensky.com -->
<!-- - https://minecraft.marcpartensky.com -->
@@ -29,14 +32,38 @@ The `docker-compose.yml` configuration is compatible with the following reverse-
- caddy
- nginx
## Commands
## Run few services at once
- Example : run a monero node
```sh
certbot certonly -d newdomain.com -n --standalone
certbot -d domain name,subdomain.domain name,www.domain name --expand
docker-compose -f services/monero-node.yml up -d
```
- Example : run multiple a wordpress website behind a proxy
```sh
docker exec -i docker_minecraft_1 rcon-cli
# 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
+47
View File
@@ -0,0 +1,47 @@
#!/bin/sh
PROJECT_PATH="$PROGRAMS_PATH/docker"
export COMPOSE_PATH_SEPARATOR=":"
export COMPOSE_FILE=$(find $PROJECT_PATH/services/*.yml | xargs -I @ echo -n @:)
export COMPOSE_FILE=${COMPOSE_FILE::-1}
if [ "$1" = "-f" ]
then
docker-compose --file $@
exit
fi
if [ -f $PWD/docker-compose.yml ]
then
if [ "$#" = 0 ]
then
docker-compose ps
exit
fi
docker-compose --file $PWD/docker-compose.yml $@
exit
fi
if [ "$#" = 0 ]
then
docker-compose ps
exit
fi
docker-compose $@
if [ "$1" = "up" ]
then
if [ "$2" = "-d" ]
then
docker-compose logs -f ${@: 3}
else
docker-compose logs -f ${@: 2}
fi
elif [ "$1" = "start" ]
then
docker-compose logs -f ${@: 2}
elif [ "$1" = "restart" ]
then
docker-compose logs -f ${@: 2}
fi
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env python
import sys
import yaml
import collections.abc
def update(d, u):
for k, v in u.items():
if isinstance(v, collections.abc.Mapping):
d[k] = update(d.get(k, {}), v)
else:
d[k] = v
return d
d = {}
for file in sys.argv[1:]:
with open(file, "r") as stream:
di = yaml.safe_load(stream)
d = update(d, di)
print(yaml.safe_dump(d))
+35
View File
@@ -0,0 +1,35 @@
#!/bin/sh
if [ $1 = merge ]
then
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
if [ -z $STACK ]
then
sep="-f"
else
sep="-c"
fi
services=$@
config_files() {
for service in $services
do
echo -n "$sep services/$service.yml "
done
}
if [ -z $STACK ]
then
cmd="docker compose $(config_files) up -d"
else
cmd="docker stack deploy $(config_files) $STACK"
fi
echo $cmd
eval $cmd
-18
View File
@@ -1,18 +0,0 @@
FROM ubuntu:latest
# Escape from here if you can
RUN apt-get update
RUN apt-get install -y openssh-server neovim
RUN service ssh start
# RUN useradd $NAME -p $PASSWORD
# need to:
# nvim /etc/ssh/sshd_config
# service ssh restart
# docker run -it -p 7022:7022 --name box marcpartensky/box
# maybe change guest passwd
EXPOSE 22
-47
View File
@@ -1,47 +0,0 @@
version: "3.9"
services:
marc:
image: marcpartensky/dotfiles
build:
context: /root/git/dotfiles
networks:
- box
stdin_open: true
tty: true
samy:
# image: marcpartensky/box
build:
context: .
dockerfile: Dockerfile
networks:
- box
etienne:
# image: marcpartensky/box
build:
context: .
dockerfile: Dockerfile
networks:
- box
stdin_open: true
tty: true
valentin:
# image: marcpartensky/box
build:
context: .
dockerfile: Dockerfile
networks:
- box
alexandre:
# image: marcpartensky/box
build:
context: .
dockerfile: Dockerfile
networks:
- box
networks:
box:
+30
View File
@@ -0,0 +1,30 @@
# first caddyfile
{
security {
authorization policy marc {
set auth url https://gate.marcpartensky.com/
crypto key verify {env.JWT_SECRET}
allow roles authp/admin authp/user
}
}
}
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 /
# }
Binary file not shown.
File diff suppressed because it is too large Load Diff
+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/
-1
View File
@@ -1 +0,0 @@
settings.yml
-47
View File
@@ -1,47 +0,0 @@
[uwsgi]
# Who will run the code
uid = searx
gid = searx
# Number of workers (usually CPU count)
workers = 4
# The right granted on the created socket
chmod-socket = 666
# Plugin to use and interpretor config
single-interpreter = true
master = true
plugin = python3
lazy-apps = true
enable-threads = true
# Module to import
module = searx.webapp
# Virtualenv and python path
pythonpath = /usr/local/searx/
chdir = /usr/local/searx/searx/
# Disable logging for privacy
disable-logging=True
# But keep errors for 2 days
touch-logrotate = /run/uwsgi-logrotate
unique-cron = 15 0 -1 -1 -1 { touch /run/uwsgi-logrotate }
log-backupname = /var/log/uwsgi/uwsgi.log.1
logto = /var/log/uwsgi/uwsgi.log
# No keep alive
# See https://github.com/searx/searx-docker/issues/24
add-header = Connection: close
# uwsgi serves the static files
# expires set to one day as Flask does
static-map = /static=/usr/local/searx/searx/static
static-expires = /* 864000
static-gzip-all = True
offload-threads = %k
# Cache
cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
+29
View File
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
KEYS_PATH="./data/tmate/keys"
set -eu
gen_key() {
keytype=$1
ks="${keytype}_"
key="$KEYS_PATH/ssh_host_${ks}key"
if [ ! -e "${key}" ] ; then
ssh-keygen -t "${keytype}" -f "${key}" -N ''
echo ""
fi
SIG=$(ssh-keygen -l -E SHA256 -f "$key.pub" | cut -d ' ' -f 2)
}
mkdir -p $KEYS_PATH
gen_key rsa
RSA_SIG=$SIG
gen_key ed25519
ED25519_SIG=$SIG
echo "You may use the following settings this in your .tmate.conf:"
echo ""
echo "set -g tmate-server-host localhost"
echo "set -g tmate-server-port 22"
echo "set -g tmate-server-rsa-fingerprint $RSA_SIG"
echo "set -g tmate-server-ed25519-fingerprint $ED25519_SIG"
Binary file not shown.
Vendored
+26
View File
@@ -0,0 +1,26 @@
caddy
website
arch
open-web-calendar
oxivia
wordpress-oxivia
servant
discord-bot
ia
docker-api
ialab
portainer
authentik
todolist
nextcloud
jenkins
seafile
matrix
etherpad
monero-miner
monero-node
pritunl
pritunl-mongo
fail2ban
ldap
ldap-manager
-80
View File
@@ -1,80 +0,0 @@
#!/bin/bash
if ! [ -x "$(command -v docker-compose)" ]; then
echo 'Error: docker-compose is not installed.' >&2
exit 1
fi
domains=(marcpartensky.com www.marcpartensky.com)
rsa_key_size=4096
data_path="./data/certbot"
email="" # Adding a valid address is strongly recommended
staging=0 # Set to 1 if you're testing your setup to avoid hitting request limits
if [ -d "$data_path" ]; then
read -p "Existing data found for $domains. Continue and replace existing certificate? (y/N) " decision
if [ "$decision" != "Y" ] && [ "$decision" != "y" ]; then
exit
fi
fi
if [ ! -e "$data_path/conf/options-ssl-nginx.conf" ] || [ ! -e "$data_path/conf/ssl-dhparams.pem" ]; then
echo "### Downloading recommended TLS parameters ..."
mkdir -p "$data_path/conf"
curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf > "$data_path/conf/options-ssl-nginx.conf"
curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem > "$data_path/conf/ssl-dhparams.pem"
echo
fi
echo "### Creating dummy certificate for $domains ..."
path="/etc/letsencrypt/live/$domains"
mkdir -p "$data_path/conf/live/$domains"
docker-compose run --rm --entrypoint "\
openssl req -x509 -nodes -newkey rsa:$rsa_key_size -days 1\
-keyout '$path/privkey.pem' \
-out '$path/fullchain.pem' \
-subj '/CN=localhost'" certbot
echo
echo "### Starting nginx ..."
docker-compose up --force-recreate -d nginx
echo
echo "### Deleting dummy certificate for $domains ..."
docker-compose run --rm --entrypoint "\
rm -Rf /etc/letsencrypt/live/$domains && \
rm -Rf /etc/letsencrypt/archive/$domains && \
rm -Rf /etc/letsencrypt/renewal/$domains.conf" certbot
echo
echo "### Requesting Let's Encrypt certificate for $domains ..."
#Join $domains to -d args
domain_args=""
for domain in "${domains[@]}"; do
domain_args="$domain_args -d $domain"
done
# Select appropriate email arg
case "$email" in
"") email_arg="--register-unsafely-without-email" ;;
*) email_arg="--email $email" ;;
esac
# Enable staging mode if needed
if [ $staging != "0" ]; then staging_arg="--staging"; fi
docker-compose run --rm --entrypoint "\
certbot certonly --webroot -w /var/www/certbot \
$staging_arg \
$email_arg \
$domain_args \
--rsa-key-size $rsa_key_size \
--agree-tos \
--force-renewal" certbot
echo
echo "### Reloading nginx ..."
docker-compose exec nginx nginx -s reload
+13
View File
@@ -0,0 +1,13 @@
version: "3.9"
services:
android:
image: budtmo/docker-android-x86-12.0
restart: unless-stopped
privileged: true
ports:
- "6080:6080"
- "5554:5554"
- "5555:5555"
- "4723:4723"
environment:
DEVICE: "Samsung Galaxy S6"
+26
View File
@@ -0,0 +1,26 @@
version: "3.9"
services:
arch:
image: marcpartensky/arch:vnc
restart: unless-stopped
ports: # vnc is shared
- "5900:5900"
networks:
- caddy
volumes:
- arch:/home/marc
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
volumes:
arch:
networks:
caddy:
external: true
+45
View File
@@ -0,0 +1,45 @@
version: "3.9"
services:
authelia:
image: authelia/authelia
restart: unless-stopped
expose:
- 9091
environment:
TZ: France/Paris
volumes:
- ../data/authelia:/config
networks:
- authelia
- caddy
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: websecure
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
+103
View File
@@ -0,0 +1,103 @@
version: "3.9"
services:
authentik:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
restart: unless-stopped
command: server
environment:
AUTHENTIK_REDIS__HOST: authentik_redis
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
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
networks:
- authentik
- caddy
labels:
caddy: authentik.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 9000}}"
traefik.enable: "true"
traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
traefik.http.routers.authentik.entrypoints: websecure
traefik.http.routers.authentik.tls.certresolver: tls
traefik.http.services.authentik.loadbalancer.server.port: 9000
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_worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
restart: unless-stopped
user: root
command: worker
environment:
AUTHENTIK_REDIS__HOST: authentik_redis
AUTHENTIK_POSTGRESQL__HOST: authentik_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
- authentik_media:/media
- authentik_certs:/certs
- authentik_templates:/templates
- authentik_geoip:/geoip
env_file:
- ../data/secrets/authentik.env
networks:
- authentik
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
volumes:
authentik_postgres:
authentik_backups:
authentik_media:
authentik_certs:
authentik_templates:
authentik_geoip:
networks:
authentik:
caddy:
external: true
+34
View File
@@ -0,0 +1,34 @@
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.entrypoints: websecure
traefik.http.routers.beef.tls.certresolver: tls
traefik.http.services.beef.loadbalancer.server.port: 3000
volumes:
beef:
networks:
caddy:
external: true
+55
View File
@@ -0,0 +1,55 @@
version: "3.9"
configs:
caddy-basic-content:
file: ../data/caddy/Caddyfile
labels:
caddy:
services:
caddy:
image: marcpartensky/caddy
ports:
- "80:80"
- "443:443"
environment:
CADDY_INGRESS_NETWORKS: caddy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- caddy_data:/data
- ../data/caddy/Caddyfile:/etc/Caddyfile
networks:
caddy:
# ipv4_address: 10.0.0.1
logging:
# syslog?
options:
max-size: 5m
max-file: "10"
healthcheck:
test: ["CMD", "curl", "-f", "localhost:80"]
deploy:
labels: # Global options
caddy.email: marc@marcpartensky.com
update_config:
parallelism: 1
delay: 5s
order: start-first
failure_action: rollback
rollback_config:
order: start-first
placement:
constraints:
- node.role == manager
# restart_policy:
# condition: any
resources:
reservations:
cpus: '1'
memory: 500M
volumes:
caddy_data:
networks:
caddy:
external: true
+47
View File
@@ -0,0 +1,47 @@
version: "3.9"
services:
discord_bot_mongo:
image: mongo
restart: unless-stopped
volumes:
- discord_bot_mongo:/data/db
networks:
- discord
ports:
- "27017:27017"
env_file:
- ../data/secrets/discord_bot_mongo.env
# healthcheck:
# test: CMD echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
discord_mongo_express:
image: mongo-express
restart: unless-stopped
environment:
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
env_file:
- ../data/secrets/discord_mongo_express.env
networks:
- discord
- caddy
depends_on:
- discord_bot_mongo
labels:
caddy: mongo.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8081}}"
traefik.enable: "true"
traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
traefik.http.routers.mongo.entrypoints: websecure
traefik.http.routers.mongo.tls.certresolver: tls
traefik.http.services.mongo.loadbalancer.server.port: 80
volumes:
discord_bot_mongo:
networks:
discord:
caddy:
external: true
attachable: true
driver: overlay
+19
View File
@@ -0,0 +1,19 @@
version: "3.9"
services:
discord-bot:
image: marcpartensky/discord-bot
restart: unless-stopped
ports:
- "7010:8000"
networks:
- discord
depends_on:
- docker_api
env_file:
- ../data/secrets/esclave.env
deploy:
replicas: 1
networks:
discord:
+13
View File
@@ -0,0 +1,13 @@
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:
+29
View File
@@ -0,0 +1,29 @@
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
labels:
caddy: duplicati.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8200}}"
volumes:
duplicati_config:
duplicati_backups:
duplicati_source:
networks:
caddy:
external: true
+22
View File
@@ -0,0 +1,22 @@
version: "3.9"
services:
etherpad:
image: etherpad/etherpad
restart: unless-stopped
environment:
ADMIN_PASSWORD: supersecret
networks:
- caddy
labels:
caddy: etherpad.marcpartensky.com, pad.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 9001}}"
traefik.enable: "true"
traefik.http.routers.etherpad.rule: Host(`etherpad.marcpartensky.com`)
traefik.http.routers.etherpad.entrypoints: websecure
traefik.http.routers.etherpad.tls.certresolver: tls
traefik.http.services.etherpad.loadbalancer.server.port: 9001
networks:
caddy:
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:
+19
View File
@@ -0,0 +1,19 @@
version: "3.9"
services:
gitea_postgres:
image: postgres
restart: unless-stopped
env_file:
- ../data/secrets/gitea.env
networks:
- caddy
- gitea
volumes:
- gitea_postgres:/var/lib/postgresql/data
volumes:
gitea_postgres:
networks:
gitea:
+41
View File
@@ -0,0 +1,41 @@
version: "3.9"
services:
gitea:
image: gitea/gitea:1.14.6
restart: unless-stopped
# user: git
# environment:
# - USER=git
# - USER_UID=1004
# - USER_GID=1004
env_file:
- ../data/secrets/gitea.env
networks:
- caddy
- gitea
volumes:
- gitea_ssh:/data/git/.ssh
- gitea:/data
# - /etc/localtime:/etc/localtime:ro
ports:
- "7012:22"
depends_on:
- gitea_postgres
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
volumes:
gitea:
gitea_ssh:
networks:
gitea:
caddy:
external: true
+44
View File
@@ -0,0 +1,44 @@
version: "3.9"
services:
gitlab:
image: gitlab/gitlab-ee: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
shm_size: '256m'
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
gitlab-runner:
image: gitlab/gitlab-runner:alpine
restart: unless-stopped
deploy:
mode: replicated
replicas: 4
volumes:
gitlab_config:
gitlab_log:
gitlab_data:
networks:
caddy:
external: true
+27
View File
@@ -0,0 +1,27 @@
version: "3.9"
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
restart: unless-stopped
environment:
PUID: 1000
PGID: 1000
TZ: France/Paris
volumes:
- ../data/heimdall:/config
networks:
- caddy
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: websecure
traefik.http.routers.heimdall.tls: "true"
# traefik.http.services.heimdall.loadbalancer.server.port: 80
# traefik.http.routers.heimdall.middlewares: authelia-basic@docker
networks:
caddy:
external: true
+21
View File
@@ -0,0 +1,21 @@
version: "3.9"
services:
homer:
image: b4bz/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}}"
volumes:
homer:
networks:
caddy:
external: true
+19
View File
@@ -0,0 +1,19 @@
version: "3.9"
services:
ia:
image: marcpartensky/discord-bot
restart: unless-stopped
ports:
- "7011:8000"
networks:
- discord
depends_on:
- docker_api
env_file:
- ../data/secrets/ia.env
deploy:
replicas: 1
networks:
discord:
+32
View File
@@ -0,0 +1,32 @@
version: "3.9"
services:
ialab:
image: marcpartensky/ialab
user: nobody
restart: unless-stopped
environment:
FLASK_APP: server.py
# entrypoint: "gunicorn server:app"
# entrypoint: "gunicorn --chdir /app server:app"
volumes:
- ialab:/app
networks:
- caddy
depends_on:
- caddy
labels:
caddy: ialab.marcpartensky.com
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: 8000
volumes:
ialab:
networks:
caddy:
external: true
+28
View File
@@ -0,0 +1,28 @@
version: "3.9"
services:
jenkins:
image: jenkins/jenkins:lts-jdk11
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
+27
View File
@@ -0,0 +1,27 @@
version: "3.9"
services:
jupyterhub:
image: jupyterhub/jupyterhub
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# - jupyterhub:/srv/jupyterhub
networks:
- caddy
environment:
DOCKER_JUPYTER_IMAGE: marcpartensky/jupyterlab
DOCKER_NETWORK_NAME: jupyterhub
HUB_IP: jupyterhub
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: 3000
networks:
caddy:
external: true
+33
View File
@@ -0,0 +1,33 @@
version: "3.9"
services:
jupyterlab:
image: marcpartensky/jupyterlab
restart: unless-stopped
environment:
# - GEN_CERT=yes
JUPYTER_ENABLE_LAB: "yes"
GRANT_SUDO: "yes"
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.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
# entrypoint: start-notebook.sh \
# --NotebookApp.keyfile=key/0000_key-certbot.pem
# --NotebookApp.certfile=cert/0000_csr-certbot.pem
# volumes:
# - /etc/letsencrypt/keys:/home/jovyan/work/key
# - /etc/letsencrypt/csr:/home/jovyan/work/cert
# - /etc/letsencrypt:/etc/letsencrypt
#
networks:
caddy:
external: true
+35
View File
@@ -0,0 +1,35 @@
version: "3.9"
services:
ldap_manager:
image: wheelybird/ldap-user-manager:latest
restart: unless-stopped
environment:
SERVER_HOSTNAME: auth.marcpartensy.com
LDAP_URI: ldap://ldap
LDAP_BASE_DN: dc=admin,dc=org
LDAP_ADMINS_GROUP: admins
LDAP_ADMIN_BIND_DN: cn=admin,dc=admin,dc=org
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: websecure
traefik.http.routers.ldap_manager.tls.certresolver: tls
traefik.http.services.ldap_manager.loadbalancer.server.port: 80
networks:
ldap:
caddy:
external: true
+28
View File
@@ -0,0 +1,28 @@
version: "3.9"
services:
ldap:
image: osixia/openldap
restart: unless-stopped
environment:
LDAP_ORGANISATION: admin
LDAP_DOMAIN: admin.org
LDAP_RFC2307BIS_SCHEMA: "true"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
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
volumes:
ldap:
ldap_slapd:
networks:
ldap:
+642
View File
@@ -0,0 +1,642 @@
version: '3.9'
services:
unbound-mailcow:
image: mailcow/unbound:1.15
restart: unless-stopped
environment:
- TZ=${TZ}
volumes:
- ./data/hooks/unbound:/hooks:Z
- ./data/conf/unbound/unbound.conf:/etc/unbound/unbound.conf:ro,Z
tty: true
networks:
mailcow-network:
ipv4_address: ${IPV4_NETWORK:-172.22.1}.254
aliases:
- unbound
mysql-mailcow:
image: mariadb:10.5
restart: unless-stopped
depends_on:
- unbound-mailcow
stop_grace_period: 45s
volumes:
- mysql-vol-1:/var/lib/mysql/:Z
- mysql-socket-vol-1:/var/run/mysqld/:z
- ./data/conf/mysql/:/etc/mysql/conf.d/:ro,Z
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-network:
aliases:
- mysql
redis-mailcow:
image: redis:6-alpine
restart: unless-stopped
volumes:
- redis-vol-1:/data/:Z
ports:
- "${REDIS_PORT:-127.0.0.1:7654}:6379"
environment:
- TZ=${TZ}
sysctls:
- net.core.somaxconn=4096
networks:
mailcow-network:
ipv4_address: ${IPV4_NETWORK:-172.22.1}.249
aliases:
- redis
clamd-mailcow:
image: mailcow/clamd:1.43
restart: unless-stopped
dns:
- ${IPV4_NETWORK:-172.22.1}.254
environment:
- TZ=${TZ}
- SKIP_CLAMD=${SKIP_CLAMD:-n}
volumes:
- ./data/conf/clamav/:/etc/clamav/:Z
networks:
mailcow-network:
aliases:
- clamd
rspamd-mailcow:
image: mailcow/rspamd:1.79
restart: unless-stopped
stop_grace_period: 30s
depends_on:
- dovecot-mailcow
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/hooks/rspamd:/hooks:Z
- ./data/conf/rspamd/custom/:/etc/rspamd/custom:z
- ./data/conf/rspamd/override.d/:/etc/rspamd/override.d:Z
- ./data/conf/rspamd/local.d/:/etc/rspamd/local.d:Z
- ./data/conf/rspamd/plugins.d/:/etc/rspamd/plugins.d:Z
- ./data/conf/rspamd/lua/:/etc/rspamd/lua/:ro,Z
- ./data/conf/rspamd/rspamd.conf.local:/etc/rspamd/rspamd.conf.local:Z
- ./data/conf/rspamd/rspamd.conf.override:/etc/rspamd/rspamd.conf.override:Z
- rspamd-vol-1:/var/lib/rspamd:z
hostname: rspamd
dns:
- ${IPV4_NETWORK:-172.22.1}.254
networks:
mailcow-network:
aliases:
- rspamd
php-fpm-mailcow:
image: mailcow/phpfpm:1.78
command: "php-fpm -d date.timezone=${TZ} -d expose_php=0"
depends_on:
- redis-mailcow
volumes:
- ./data/hooks/phpfpm:/hooks:Z
- ./data/web:/web:z
- ./data/conf/rspamd/dynmaps:/dynmaps:ro,z
- ./data/conf/rspamd/custom/:/rspamd_custom_maps:z
- rspamd-vol-1:/var/lib/rspamd:z
- mysql-socket-vol-1:/var/run/mysqld/:z
- ./data/conf/sogo/:/etc/sogo/:z
- ./data/conf/rspamd/meta_exporter:/meta_exporter:ro,z
- ./data/conf/phpfpm/sogo-sso/:/etc/sogo-sso/:z
- ./data/conf/phpfpm/php-fpm.d/pools.conf:/usr/local/etc/php-fpm.d/z-pools.conf:Z
- ./data/conf/phpfpm/php-conf.d/opcache-recommended.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini:Z
- ./data/conf/phpfpm/php-conf.d/upload.ini:/usr/local/etc/php/conf.d/upload.ini:Z
- ./data/conf/phpfpm/php-conf.d/other.ini:/usr/local/etc/php/conf.d/zzz-other.ini:Z
- ./data/conf/dovecot/global_sieve_before:/global_sieve/before:z
- ./data/conf/dovecot/global_sieve_after:/global_sieve/after:z
- ./data/assets/templates:/tpls:z
- ./data/conf/nginx/:/etc/nginx/conf.d/:z
dns:
- ${IPV4_NETWORK:-172.22.1}.254
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}
restart: unless-stopped
networks:
mailcow-network:
aliases:
- phpfpm
sogo-mailcow:
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:
- ${IPV4_NETWORK:-172.22.1}.254
volumes:
- ./data/hooks/sogo:/hooks:Z
- ./data/conf/sogo/:/etc/sogo/:z
- ./data/web/inc/init_db.inc.php:/init_db.inc.php:Z
- ./data/conf/sogo/custom-favicon.ico:/usr/lib/GNUstep/SOGo/WebServerResources/img/sogo.ico:z
- ./data/conf/sogo/custom-theme.js:/usr/lib/GNUstep/SOGo/WebServerResources/js/theme.js:z
- ./data/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
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-network:
ipv4_address: ${IPV4_NETWORK:-172.22.1}.248
aliases:
- sogo
dovecot-mailcow:
image: mailcow/dovecot:1.159
restart: unless-stopped
depends_on:
- mysql-mailcow
dns:
- ${IPV4_NETWORK:-172.22.1}.254
cap_add:
- NET_BIND_SERVICE
volumes:
- ./data/hooks/dovecot:/hooks:Z
- ./data/conf/dovecot:/etc/dovecot:z
- ./data/assets/ssl:/etc/ssl/mail/:ro,z
- ./data/conf/sogo/:/etc/sogo/:z
- ./data/conf/phpfpm/sogo-sso/:/etc/phpfpm/:z
- vmail-vol-1:/var/vmail:Z
- vmail-index-vol-1:/var/vmail_index:Z
- crypt-vol-1:/mail_crypt/:z
- ./data/conf/rspamd/custom/:/etc/rspamd/custom:z
- ./data/assets/templates:/templates:z
- rspamd-vol-1:/var/lib/rspamd:z
- mysql-socket-vol-1:/var/run/mysqld/:z
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
hard: 40000
networks:
mailcow-network:
ipv4_address: ${IPV4_NETWORK:-172.22.1}.250
aliases:
- dovecot
postfix-mailcow:
image: mailcow/postfix:1.66
restart: unless-stopped
depends_on:
- mysql-mailcow
volumes:
- ./data/hooks/postfix:/hooks:Z
- ./data/conf/postfix:/opt/postfix/conf:z
- ./data/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
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:
- ${IPV4_NETWORK:-172.22.1}.254
networks:
mailcow-network:
ipv4_address: ${IPV4_NETWORK:-172.22.1}.253
aliases:
- postfix
memcached-mailcow:
image: memcached:alpine
restart: unless-stopped
environment:
- TZ=${TZ}
networks:
mailcow-network:
aliases:
- memcached
nginx-mailcow:
image: nginx:mainline-alpine
restart: unless-stopped
depends_on:
- sogo-mailcow
- php-fpm-mailcow
- redis-mailcow
dns:
- ${IPV4_NETWORK:-172.22.1}.254
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;'"
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/web:/web:ro,z
- ./data/conf/rspamd/dynmaps:/dynmaps:ro,z
- ./data/assets/ssl/:/etc/ssl/mail/:ro,z
- ./data/conf/nginx/:/etc/nginx/conf.d/:z
- ./data/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
caddy.reverse_proxy: "{{upstreams 80}}"
networks:
caddy:
mailcow-network:
aliases:
- nginx
acme-mailcow:
image: mailcow/acme:1.81
restart: unless-stopped
depends_on:
- nginx-mailcow
dns:
- ${IPV4_NETWORK:-172.22.1}.254
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/web/.well-known/acme-challenge:/var/www/acme:z
- ./data/assets/ssl:/var/lib/acme/:z
- ./data/assets/ssl-example:/var/lib/ssl-example/:ro,Z
- mysql-socket-vol-1:/var/run/mysqld/:z
networks:
mailcow-network:
aliases:
- acme
netfilter-mailcow:
image: mailcow/netfilter:1.46
restart: unless-stopped
stop_grace_period: 30s
depends_on:
- dovecot-mailcow
- postfix-mailcow
- sogo-mailcow
- php-fpm-mailcow
- redis-mailcow
privileged: true
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-mailcow:
image: mailcow/watchdog:1.96
restart: unless-stopped
dns:
- ${IPV4_NETWORK:-172.22.1}.254
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/assets/ssl:/etc/ssl/mail/:ro,z
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}
- MAILQ_CRIT=${MAILQ_CRIT:-30}
networks:
mailcow-network:
aliases:
- watchdog
dockerapi-mailcow:
image: mailcow/dockerapi:1.41
restart: unless-stopped
security_opt:
- label=disable
# oom_kill_disable: true
dns:
- ${IPV4_NETWORK:-172.22.1}.254
environment:
- DBROOT=${DBROOT}
- TZ=${TZ}
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
mailcow-network:
aliases:
- dockerapi
solr-mailcow:
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"
environment:
- TZ=${TZ}
- SOLR_HEAP=${SOLR_HEAP:-1024}
- SKIP_SOLR=${SKIP_SOLR:-y}
networks:
mailcow-network:
aliases:
- solr
olefy-mailcow:
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
networks:
mailcow-network:
aliases:
- olefy
ofelia-mailcow:
image: mcuadros/ofelia:latest
restart: unless-stopped
command: daemon --docker
environment:
- TZ=${TZ}
depends_on:
- sogo-mailcow
- dovecot-mailcow
labels:
ofelia.enabled: "true"
security_opt:
- label=disable
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
mailcow-network:
aliases:
- ofelia
ipv6nat-mailcow:
image: robbertkl/ipv6nat
restart: unless-stopped
depends_on:
- unbound-mailcow
- mysql-mailcow
- redis-mailcow
- clamd-mailcow
- rspamd-mailcow
- php-fpm-mailcow
- sogo-mailcow
- dovecot-mailcow
- postfix-mailcow
- memcached-mailcow
- nginx-mailcow
- acme-mailcow
- netfilter-mailcow
- watchdog-mailcow
- dockerapi-mailcow
- solr-mailcow
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:
mailcow-network:
driver: overlay
# driver: bridge
# driver_opts:
# com.docker.network.bridge.name: br-mailcow
# # enable_ipv6: true
# ipam:
# driver: default
# config:
# - subnet: ${IPV4_NETWORK:-172.22.1}.0/24
# - subnet: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
caddy:
external: true
driver: overlay
attachable: true
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:
+27
View File
@@ -0,0 +1,27 @@
version: "3.9"
services:
matrix:
image: matrixdotorg/synapse
restart: unless-stopped
# environment:
# SYNAPSE_REPORT_STATS: "no"
# SYNAPSE_SERVER_NAME: matrix.marcpartensky.com
# SYNAPSE_ENABLE_REGISTRATION: "true"
volumes:
- ../data/matrix:/data
# - matrix:/data
networks:
- caddy
labels:
caddy: matrix.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8008}}"
traefik.enable: "true"
traefik.http.routers.matrix.rule: Host(`matrix.marcpartensky.com`)
traefik.http.routers.matrix.entrypoints: websecure
traefik.http.routers.matrix.tls.certresolver: tls
traefik.http.services.matrix.loadbalancer.server.port: 8008
networks:
caddy:
external: true
+23
View File
@@ -0,0 +1,23 @@
version: "3.9"
services:
backups:
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
- ./mc-backups:/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:
+34
View File
@@ -0,0 +1,34 @@
version: "3.9"
services:
mcmyadmin:
image: tekgator/docker-mcmyadmin:latest
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.minecraft.rule: Host(`mcadmin.marcpartensky.com`)
traefik.http.routers.minecraft.entrypoints: websecure
traefik.http.routers.minecraft.tls.certresolver: tls
traefik.http.services.minecraft.loadbalancer.server.port: 8080
volumes:
mcmyadmin:
networks:
minecraft:
caddy:
external: true
+36
View File
@@ -0,0 +1,36 @@
version: "3.9"
services:
mcvnc:
image: dorowu/ubuntu-desktop-lxde-vnc
volumes:
- /dev/shm:/dev/shm
- mcvnc:/home/marc
- mcvnc_usr:/usr
ports:
- 7900:5900
environment:
USER: marc
PASSWORD: test
networks:
- minecraft
- caddy
depends_on:
- minecraft
labels:
caddy: minecraft.marcpartensky.com, mc.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.gitea.rule: Host(`mc.marcpartensky.com`)
traefik.http.routers.gitea.entrypoints: websecure
traefik.http.routers.gitea.tls.certresolver: tls
traefik.http.services.gitea.loadbalancer.server.port: 80
volumes:
mcvnc:
mcvnc_usr:
networks:
minecraft:
caddy:
external: true
+13
View File
@@ -0,0 +1,13 @@
version: "3.9"
services:
minecraft_bedrock:
image: itzg/minecraft-bedrock-server
restart: unless-stopped
ports:
- "19132:19132"
- "39926:39926"
environment:
EULA: "true"
VERSION: "1.18"
OPS: "000901FA5EE9A31B"
+36
View File
@@ -0,0 +1,36 @@
version: "3.9"
services:
minecraft_champi:
image: itzg/minecraft-server
restart: unless-stopped
environment:
TZ: Europe/Paris
EULA: "TRUE"
OPS: MazexRedstone
ENABLE_COMMAND_BLOCK: "TRUE"
MEMORY: 2G
VERSION: 1.16.5
ICON: https://cdn.discordapp.com/attachments/507519157387132940/998015338966945822/unknown.png
MOTD: Made in Marc Partensky
ANNOUNCE_PLAYER_ACHIEVEMENTS: "TRUE"
LEVEL: Server
ONLINE_MODE: "FALSE" # no need for an account
DIFFICULTY: hard
VIEW_DISTANCE: 32
# MAX_PLAYERS: 50
# WORLD: $BIND_MOUNTS/minecraft/zip/Server.zip
# SNOOPER_ENABLED: false
volumes:
- /srv/minecraft/champi:/data
# - minecraft:/data
ports:
- "25565:25565"
networks:
- minecraft
# volumes:
# minecraft:
networks:
minecraft:
+36
View File
@@ -0,0 +1,36 @@
version: "3.9"
services:
minecraft_jungle:
image: itzg/minecraft-server
restart: unless-stopped
environment:
TZ: Europe/Paris
EULA: "TRUE"
OPS: MazexRedstone
ENABLE_COMMAND_BLOCK: "TRUE"
MEMORY: 2G
VERSION: 1.16.5
ICON: https://media.discordapp.net/attachments/507519157387132940/984995267197677598/unknown.png
MOTD: Made in Marc Partensky
ANNOUNCE_PLAYER_ACHIEVEMENTS: "TRUE"
LEVEL: Server
ONLINE_MODE: "FALSE" # no need for an account
DIFFICULTY: hard
VIEW_DISTANCE: 32
# MAX_PLAYERS: 50
# WORLD: $BIND_MOUNTS/minecraft/zip/Server.zip
# SNOOPER_ENABLED: false
volumes:
- /srv/minecraft/jungle:/data
# - minecraft:/data
ports:
- "25564:25565"
networks:
- minecraft
# volumes:
# minecraft:
networks:
minecraft:
+13
View File
@@ -0,0 +1,13 @@
version: "3.9"
services:
monero_miner:
image: giansalex/monero-miner
restart: unless-stopped
env_file:
- ../data/secrets/monero_miner.env
# entrypoint: /xmr/xmrig \
# -o pool.supportxmr.com:3333 \
# -u $WALLET \
# -k \
# --cpu-priority=2
+23
View File
@@ -0,0 +1,23 @@
version: "3.9"
services:
monero_node:
image: kannix/monero-full-node
restart: unless-stopped
volumes:
- monero_node_xmrchain:/home/monero/.bitmonero
ports:
- "18080:18080"
- "18081:18081"
deploy:
resources:
limits:
cpus: '1'
memory: 2000M
volumes:
monero_node_xmrchain:
networks:
caddy:
external: true
+47
View File
@@ -0,0 +1,47 @@
version: "3.9"
services:
mongo:
image: mongo
restart: unless-stopped
volumes:
- mongo:/data/db
networks:
- mongo
ports:
- "27017:27017"
env_file:
- ../data/secrets/mongo.env
# healthcheck:
# test: CMD echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
mongo_express:
image: mongo-express
restart: unless-stopped
environment:
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
env_file:
- ../data/secrets/mongo_express.env
networks:
- mongo
- caddy
depends_on:
- mongo
labels:
caddy: mongo.marcpartensky.com, mongo.marc.wf, mongo.marc.tf
caddy.reverse_proxy: "{{upstreams 8081}}"
traefik.enable: "true"
traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
traefik.http.routers.mongo.entrypoints: websecure
traefik.http.routers.mongo.tls.certresolver: tls
traefik.http.services.mongo.loadbalancer.server.port: 80
volumes:
mongo:
networks:
mongo:
caddy:
external: true
attachable: true
driver: overlay
+35
View File
@@ -0,0 +1,35 @@
version: "3.9"
services:
nextcloud:
image: nextcloud
restart: unless-stopped
volumes:
- nextcloud:/var/www/html
# - nextcloud:/var/www/html/data
# - nextcloud_theme:/var/www/html/themes/<YOUR_CUSTOM_THEME>
# - nextcloud_apps:/var/www/html/custom_apps
# - nextcloud_config:/var/www/html/config
env_file:
- ../data/secrets/nextcloud.env
networks:
- caddy
- nextcloud
# depends_on:
# - nextcloud_mariadb
labels:
caddy: cloud.marcpartensky.com
caddy.reverse_proxy: "{{upstreams http 80}}"
traefik.enable: "true"
traefik.http.routers.nextcloud.rule: Host(`cloud.marcpartensky.com`)
traefik.http.routers.nextcloud.entrypoints: websecure
traefik.http.routers.nextcloud.tls.certresolver: tls
traefik.http.services.nextcloud.loadbalancer.server.port: 80
volumes:
nextcloud:
networks:
nextcloud:
caddy:
external: true
+20
View File
@@ -0,0 +1,20 @@
version: "3.9"
services:
nextcloud_mariadb:
image: mariadb
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- nextcloud_mariadb:/var/lib/mysql
env_file:
- ../data/secrets/nextcloud.env
networks:
- caddy
- nextcloud
volumes:
nextcloud_mariadb:
networks:
nextcloud:
+27
View File
@@ -0,0 +1,27 @@
version: "3.9"
services:
open_web_calendar:
image: marcpartensky/open-web-calendar
restart: unless-stopped
working_dir: /app
environment:
HOST: open_web_calendar
PORT: 80
networks:
- caddy
entrypoint: python app.py
depends_on:
- caddy
labels:
caddy: calendar.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.open_web_calendar.rule: Host(`calendar.marcpartensky.com`)
traefik.http.routers.open_web_calendar.entrypoints: websecure
traefik.http.routers.open_web_calendar.tls.certresolver: tls
traefik.http.services.open_web_calendar.loadbalancer.server.port: 80
networks:
caddy:
external: true
+19
View File
@@ -0,0 +1,19 @@
version: "3.9"
services:
oxivia_mysql:
image: mysql
restart: unless-stopped
user: 999:1000
env_file:
- ../data/secrets/oxivia.env
volumes:
- $BIND_MOUNTS/oxivia_mysql:/var/lib/mysql
networks:
- caddy
- oxivia
networks:
oxivia:
caddy:
external: true
+33
View File
@@ -0,0 +1,33 @@
version: "3.9"
services:
oxivia:
image: wordpress
restart: unless-stopped
user: 1000:1000
env_file:
- ../data/secrets/oxivia.env
volumes:
- $BIND_MOUNTS/oxivia:/var/www/html
- ../data/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
networks:
- caddy
- oxivia
depends_on:
# - oxivia_mysql
- caddy
healthcheck:
test: ["CMD", "curl", "-f", "localhost:80"]
labels:
caddy: oxivia.business.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.oxivia.rule: Host(`oxivia.business.marcpartensky.com`)
traefik.http.routers.oxivia.entrypoints: websecure
traefik.http.routers.oxivia.tls.certresolver: tls
traefik.http.services.oxivia.loadbalancer.server.port: 80
networks:
oxivia:
caddy:
external: true
+30
View File
@@ -0,0 +1,30 @@
version: "3.9"
services:
pandoc:
image: marcpartensky/pandoc-api
restart: unless-stopped
working_dir: /app
env_file:
- ../data/secrets/pandoc.env
volumes:
- pandoc:/app/files
labels:
caddy: pandoc.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.pandoc.rule: Host(`pandoc.marcpartensky.com`)
traefik.http.routers.pandoc.entrypoints: websecure
traefik.http.routers.pandoc.tls.certresolver: tls
traefik.http.services.pandoc.loadbalancer.server.port: 80
networks:
- caddy
depends_on:
- caddy
volumes:
pandoc:
networks:
caddy:
external: true
+63
View File
@@ -0,0 +1,63 @@
version: "3.3"
services:
peertube:
image: chocobozzz/peertube:production-bullseye
restart: unless-stopped
networks:
- caddy
env_file:
- ../data/secrets/peertube.env
ports:
- "1935:1935" # If you don't want to use the live feature, you can comment this line
# - "9000:9000" # If you provide your own webserver and reverse-proxy, otherwise not suitable for production
volumes:
- peertube_assets:/app/client/dist
- peertube:/data
- ../data/peertube:/config
depends_on:
- peertube_postgres
- peertube_redis
- peertube_postfix
labels:
caddy: peertube.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.gitea.rule: Host(`peertube.marcpartensky.com`)
traefik.http.routers.gitea.entrypoints: websecure
traefik.http.routers.gitea.tls.certresolver: tls
traefik.http.services.gitea.loadbalancer.server.port: 80
peertube_postgres:
image: postgres:13-alpine
restart: unless-stopped
env_file:
- ../data/secrets/peertube.env
volumes:
- peertube_postgres:/var/lib/postgresql/data
peertube_redis:
image: redis:6-alpine
restart: unless-stopped
volumes:
- peertube_redis:/data
peertube_postfix:
image: mwader/postfix-relay
restart: unless-stopped
env_file:
- .env
volumes:
- peertube_postfix:/etc/opendkim/keys
networks:
caddy:
external: true
volumes:
peertube:
peertube_assets:
peertube_postgres:
peertube_redis:
peertube_postfix:
+37
View File
@@ -0,0 +1,37 @@
version: "3.9"
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
image: pihole/pihole:latest
restart: unless-stopped
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp" # Only required if you are using Pi-hole as your DHCP server
# - "80:80/tcp"
environment:
TZ: 'Europe/Paris'
# WEBPASSWORD: 'set a secure password here or it will be random'
# Volumes store your data between container upgrades
volumes:
- ../data/pihole/etc-pihole:/etc/pihole
- ../data/pihole/etc-dnsmasq.d:/etc/dnsmasq.d
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
cap_add:
- NET_ADMIN # Recommended but not required (DHCP needs NET_ADMIN)
networks:
- caddy
labels:
caddy: pihole.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.pihole.rule: Host(`pihole.marcpartensky.com`)
traefik.http.routers.pihole.entrypoints: websecure
traefik.http.routers.pihole.tls.certresolver: tls
traefik.http.services.pihole.loadbalancer.server.port: 80
networks:
caddy:
external: true
+37
View File
@@ -0,0 +1,37 @@
version: "3.9"
services:
portainer:
image: portainer/portainer-ce
restart: unless-stopped
environment:
VIRTUAL_HOST: docker.marcpartensky.com
VIRTUAL_PORT: 9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer:/data
networks:
- caddy
command:
- --logo
- https://marcpartensky.com/static/home/assets/img/white-orchid.svg
# healthcheck:
# test: ["CMD", "curl", "-f", "http://localhost:9000"]
# test: ["CMD", "portainer", "--healthcheck"]
depends_on:
- caddy
labels:
caddy: docker.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 9000}}"
traefik.enable: "true"
traefik.http.routers.portainer.rule: Host(`docker.marcpartensky.com`)
traefik.http.routers.portainer.entrypoints: websecure
traefik.http.routers.portainer.tls.certresolver: tls
traefik.http.services.portainer.loadbalancer.server.port: 9000
volumes:
portainer:
networks:
caddy:
external: true
+21
View File
@@ -0,0 +1,21 @@
version: "3.9"
services:
pritunl_mongo:
image: mongo:latest
restart: unless-stopped
volumes:
- pritunl_mongo:/data/db
networks:
- pritunl
volumes:
pritunl_mongo:
networks:
pritunl:
# internal: true
# driver: bridge
ipam:
config:
- subnet: 172.177.0.0/16
+47
View File
@@ -0,0 +1,47 @@
version: "3.9"
services:
pritunl:
image: goofball222/pritunl
restart: unless-stopped
ports:
- "1194-1195:1194-1195/udp"
depends_on:
- pritunl_mongo
environment:
REVERSE_PROXY: "true"
TZ: Europe/Paris
MONGODB_URI: mongodb://pritunl_mongo:27017/pritunl
PRITUNL_DEBUG: "true"
privileged: true
cap_add:
- SYS_ADMIN
- NET_ADMIN
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv4.ip_forward=1
# healthcheck:
# test: ["CMD", "wget", "-q", "localhost:80", "-O", "/dev/null"]
# volumes:
# - /etc/localtime:/etc/localtime:ro
networks:
- caddy
- pritunl
labels:
caddy: vpn.marcpartensky.com
caddy.reverse_proxy: "{{upstreams http 9700}}"
traefik.enable: "true"
traefik.http.routers.pritunl.rule: Host(`vpn.marcpartensky.com`)
traefik.http.routers.pritunl.entrypoints: websecure
traefik.http.routers.pritunl.tls.certresolver: tls
traefik.http.services.pritunl.loadbalancer.server.port: 9700
networks:
caddy:
external: true
pritunl:
# internal: true
# driver: bridge
ipam:
config:
- subnet: 172.177.0.0/16
+138
View File
@@ -0,0 +1,138 @@
version: '3.8'
x-common:
panel:
&panel-environment
APP_URL: "https://pterodactyl.marcpartensky.com"
# A list of valid timezones can be found here: http://php.net/manual/en/timezones.php
APP_TIMEZONE: "UTC"
APP_SERVICE_AUTHOR: "noreply@pterodactyl.marcpartensky.com"
# Uncomment the line below and set to a non-empty value if you want to use Let's Encrypt
# to generate an SSL certificate for the Panel.
# LE_EMAIL: ""
mail:
&mail-environment
MAIL_FROM: "noreply@pterodactyl.marcpartensky.com"
MAIL_DRIVER: "smtp"
MAIL_HOST: "marcpartensky.com"
MAIL_PORT: "1025"
MAIL_USERNAME: "marc@marcpartensky.com"
MAIL_PASSWORD: ""
MAIL_ENCRYPTION: "true"
services:
pterodactyl_panel:
image: ghcr.io/pterodactyl/panel:latest
restart: unless-stopped
links:
- pterodactyl_mariadb
- pterodactyl_redis
volumes:
- pterodactyl_panel_var:/app/var/
- pterodactyl_panel_logs:/app/storage/logs
- pterodactyl_panel_nginx:/etc/nginx/http.d
- pterodactyl_panel_certs:/etc/letsencrypt
env_file:
- ../data/secrets/pterodactyl.env
environment:
<<: [*panel-environment, *mail-environment]
APP_ENV: production
APP_ENVIRONMENT_ONLY: "false"
CACHE_DRIVER: redis
SESSION_DRIVER: redis
QUEUE_DRIVER: redis
REDIS_HOST: pterodactyl_redis
DB_HOST: pterodactyl_mariadb
DB_PORT: 3306
DB_USERNAME: pterodactyl
networks:
- pterodactyl
- caddy
labels:
caddy: pterodactyl.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.pterodactyl.rule: Host(`pterodactyl.marcpartensky.com`)
traefik.http.routers.pterodactyl.entrypoints: websecure
traefik.http.routers.pterodactyl.tls.certresolver: tls
traefik.http.services.pterodactyl.loadbalancer.server.port: 80
pterodactyl_mariadb:
image: mariadb:10.5
restart: unless-stopped
volumes:
- pterodactyl_mariadb:/var/lib/mysql
environment:
MYSQL_DATABASE: "panel"
MYSQL_USER: "pterodactyl"
env_file:
- ../data/secrets/pterodactyl.env
networks:
- pterodactyl
pterodactyl_redis:
image: redis:alpine
restart: unless-stopped
networks:
- pterodactyl
pterodactyl_wing_1:
image: ghcr.io/pterodactyl/wings:v1.6.1
restart: always
networks:
- wing1
- pterodactyl
ports:
- "9080:8080"
- "9022:2022"
- "9443:443"
tty: true
environment:
TZ: "UTC"
WINGS_UID: 988
WINGS_GID: 988
WINGS_USERNAME: pterodactyl
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/containers/:/var/lib/docker/containers
- pterodactyl_etc:/etc/pterodactyl
- pterodactyl_var_lib:/var/lib/pterodactyl
- pterodactyl_var_log:/var/log/pterodactyl
- /tmp/pterodactyl:/tmp/pterodactyl
# - /etc/ssl/certs:/etc/ssl/certs:ro
# you may need /srv/daemon-data if you are upgrading from an old daemon
#- "/srv/daemon-data/:/srv/daemon-data/"
# Required for ssl if you use let's encrypt. uncomment to use.
#- "/etc/letsencrypt/:/etc/letsencrypt/"
labels:
caddy: wing1.pterodactylmarcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.pterodactyl_wing_1.rule: Host(`wing1.pterodactyl.marcpartensky.com`)
traefik.http.routers.pterodactyl_wing_1.entrypoints: websecure
traefik.http.routers.pterodactyl_wing_1.tls.certresolver: tls
traefik.http.services.pterodactyl_wing_1.loadbalancer.server.port: 8080
volumes:
pterodactyl_mariadb:
pterodactyl_panel_var:
pterodactyl_panel_logs:
pterodactyl_panel_nginx:
pterodactyl_panel_certs:
pterodactyl_etc:
pterodactyl_var_lib:
pterodactyl_var_log:
networks:
pterodactyl:
wing1:
caddy:
external: true
# wings0:
# name: wings0
# driver: bridge
# ipam:
# config:
# - subnet: "172.21.0.0/16"
# driver_opts:
# com.docker.network.bridge.name: wings0
+59
View File
@@ -0,0 +1,59 @@
version: "3.9"
services:
pterodactyl_http:
image: marcpartensky/pterodactyl-http
restart: unless-stopped
depends_on:
- pterodactyl_php
networks:
- pterodactyl
- caddy
volumes:
- pterodactyl_env:/var/www/html/env
- pterodactyl_panel:/var/www/html/pterodactyl
- pterodactyl_storage:/var/www/html/pterodactyl/storage
labels:
caddy: pterodactyl.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
php:
image: marcpartensky/pterodactyl-php
restart: unless-stopped
depends_on:
- pterodactyl_db
networks:
- pterodactyl
volumes:
- pterodactyl_env:/var/www/html/env
- pterodactyl_panel:/var/www/html/pterodactyl
- pterodactyl_storage:/var/www/html/pterodactyl/storage
pterodactyl_db:
image: mariadb
restart: unless-stopped
environment:
MYSQL_DATABASE: pterodactyl
MYSQL_PASSWORD: pterodactyl
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_USER: pterodactyl
networks:
- pterodactyl
volumes:
- pterodactyl_db:/var/lib/mysql
redis:
image: redis:alpine
restart: unless-stopped
networks:
- pterodactyl
networks:
pterodactyl:
caddy:
external: true
volumes:
pterodactyl_db:
pterodactyl_env:
pterodactyl_panel:
pterodactyl_storage:
+18
View File
@@ -0,0 +1,18 @@
version: "3.9"
services:
netbootxyz:
image: lscr.io/linuxserver/netbootxyz
restart: unless-stopped
environment:
PUID: 1000
PGID: 1000
MENU_VERSION: 1.9.9 #optional
PORT_RANGE: 30000:30010 #optional
SUBFOLDER: / #optional
volumes:
- ../data/pxe/config:/config
- ../data/pxe/assets:/assets #optional
ports:
- 3000:3000
- 69:69/udp
- 8080:80 #optional
+28
View File
@@ -0,0 +1,28 @@
version: "3.9"
services:
rancher:
image: rancher/server
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- caddy
labels:
caddy: rancher.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.rancher.rule: Host(`rancher.marcpartensky.com`)
traefik.http.routers.rancher.entrypoints: websecure
traefik.http.routers.rancher.tls.certresolver: tls
traefik.http.services.rancher.loadbalancer.server.port: 8080
user: root
deploy:
resources:
limits:
cpus: '4'
memory: 5000M
networks:
caddy:
external: true
+39
View File
@@ -0,0 +1,39 @@
version: "3.9"
services:
registry:
restart: unless-stopped
image: registry:latest
environment:
REGISTRY_HTTP_ADDR: 0.0.0.0:80
# REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
# REGISTRY_HTTP_TLS_KEY: /certs/domain.key
# REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
# REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
env_file:
- ../data/secrets/registry.env
volumes:
- registry_data:/var/lib/registry
- registry_certs:/certs
- registry_auth:/auth
depends_on:
- caddy
networks:
- caddy
labels:
caddy: registry.marcpartensky.com, r.marc.wf
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.registry.rule: Host(`registry.marcpartensky.com`)
traefik.http.routers.registry.entrypoints: websecure
traefik.http.routers.registry.tls.certresolver: "tls"
traefik.http.services.registry.loadbalancer.server.port: 80
volumes:
registry_data:
registry_certs:
registry_auth:
networks:
caddy:
external: true
+52
View File
@@ -0,0 +1,52 @@
version: "3.9"
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE:-latest}
restart: on-failure
labels:
caddy: rocketchat.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 3000}}"
traefik.enable: 'true'
traefik.http.routers.rocketchat.rule: Host(`rocket.marcpartensky.com`)
traefik.http.routers.rocketchat.tls: 'true'
traefik.http.routers.rocketchat.entrypoints: https
traefik.http.routers.rocketchat.tls.certresolver: letsencrypt
environment:
MONGO_URL: "${MONGO_URL:-\
mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
${MONGODB_DATABASE:-rocketchat}?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}"
MONGO_OPLOG_URL: "${MONGO_OPLOG_URL:\
-mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
local?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}"
ROOT_URL: ${ROOT_URL:-http://localhost:${HOST_PORT:-3000}}
PORT: ${PORT:-3000}
depends_on:
- mongodb
expose:
- ${PORT:-3000}
ports:
- host_ip: ${BIND_IP:-0.0.0.0}
target: ${PORT:-3000}
published: ${HOST_PORT:-3000}
protocol: tcp
mode: host
rocket_mongodb:
image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-4.4}
restart: on-failure
volumes:
- mongodb_data:/bitnami/mongodb
environment:
MONGODB_REPLICA_SET_MODE: primary
MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0}
MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017}
MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb}
MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}
MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb}
MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
volumes:
mongodb_data: { driver: local }
+37
View File
@@ -0,0 +1,37 @@
version: "3.9"
services:
rustdesk_hbbs:
image: rustdesk/rustdesk-server:latest
restart: unless-stopped
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
command: hbbs -r example.com:21117
volumes:
- rustdesk_hbbs:/root
networks:
- rustdesk
depends_on:
- rustdesk_hbbr
rustdesk_hbbr:
image: rustdesk/rustdesk-server:latest
restart: unless-stopped
ports:
- 21117:21117
- 21119:21119
command: hbbr
volumes:
- rustdesk_hbbr:/root
networks:
- rustdesk
volumes:
rustdesk_hbbs:
rustdesk_hbbr:
networks:
rustdesk:
+78
View File
@@ -0,0 +1,78 @@
version: "3.9"
services:
seafile_server:
image: ggogel/seafile-server:9.0.7
volumes:
- seafile_data:/shared
env_file:
- ../data/secrets/seafile.env
environment:
HTTPS: "true"
SEAFILE_SERVER_HOSTNAME: seafile.marcpartensky.com # Mandatory on first deployment!
depends_on:
- seafile_mariadb
- seafile_memcached
- seafile_caddy
networks:
- seafile
seahub:
image: ggogel/seahub:9.0.7
volumes:
- seafile_data:/shared
- seahub_avatars:/shared/seafile/seahub-data/avatars
- seahub_custom:/shared/seafile/seahub-data/custom
env_file:
- ../data/secrets/seafile.env
depends_on:
- seafile_server
- seafile_caddy
- seahub_media
networks:
- seafile
seahub_media:
image: ggogel/seahub-media:9.0.7
volumes:
- seahub_avatars:/usr/share/caddy/media/avatars
- seahub_custom:/usr/share/caddy/media/custom
depends_on:
- seafile_caddy
networks:
- seafile
seafile_mariadb:
image: mariadb:10.7.4
env_file:
- ../data/secrets/seafile.env
volumes:
- seafile_mariadb:/var/lib/mysql
networks:
- seafile
seafile_memcached:
image: memcached:1.6.16
entrypoint: memcached -m 1024
networks:
- seafile
seafile_caddy:
image: ggogel/seafile-caddy:1.0.6
networks:
- seafile
- caddy
labels:
caddy: seafile.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
networks:
seafile:
internal: true
caddy:
external: true
volumes:
seafile_data:
seafile_mariadb:
seahub_avatars:
seahub_custom:
+27
View File
@@ -0,0 +1,27 @@
version: "3.9"
services:
searx:
image: searx/searx
restart: unless-stopped
volumes:
- searx:/etc/searx
environment:
BASE_URL: https://searx.marcpartensky.com
networks:
- caddy
labels:
caddy: searx.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.searx.rule: Host(`searx.marcpartensky.com`)
traefik.http.routers.searx.entrypoints: websecure
traefik.http.routers.searx.tls.certresolver: tls
traefik.http.services.searx.loadbalancer.server.port: 80
volumes:
searx:
networks:
caddy:
external: true
+6
View File
@@ -0,0 +1,6 @@
version: "3.9"
services:
servant:
image: marcpartensky/servitor
restart: unless-stopped
+12
View File
@@ -0,0 +1,12 @@
version: "3.9"
services:
ssh_chat:
image: marcoslater/ssh-chat:latest
restart: unless-stopped
ports:
- "2022:2022"
volumes:
ssh_chat_key: /ssh_key
volumes:
ssh_chat_key:
+13
View File
@@ -0,0 +1,13 @@
versions: "3.9"
services:
image: farmer1992/sshpiperd
restart: unless-stopped
ports:
- "2222:2222"
volumes:
- sshpiper:/var/sshpiper
# - /etc/ssh/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key
volumes:
sshpiper:
+33
View File
@@ -0,0 +1,33 @@
version: "3.9"
services:
sslh:
image: marcpartensky/sslh
restart: unless-stopped
environment:
# LISTEN_IP: 0.0.0.0
# LISTEN_PORT: 443
SSH_HOST: marcpartensky.com
SSH_PORT: 22
# OPENVPN_HOST: localhost
# OPENVPN_PORT: 1194
HTTPS_HOST: caddy
HTTPS_PORT: 443
ports:
# - "443:8443"
# command: --tls=caddy:443 --ssh=marcpartensky.com:7022
networks:
- caddy
# - bridge
depends_on:
- caddy
healthcheck:
# test: ["CMD-SHELL", "wget", "--no-check-certificate", "https://caddy:8443"]
test: ["CMD", "/usr/bin/curl", "http://caddy"]
# interval: 30s
# timeout: 5s
# retries: 5
networks:
caddy:
external: true
+25
View File
@@ -0,0 +1,25 @@
version: "3.9"
services:
swarmpit_agent:
image: swarmpit/agent:latest
environment:
DOCKER_API_VERSION: 1.35
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- swarmpit
deploy:
mode: global
labels:
swarmpit.agent: 'true'
resources:
limits:
cpus: '0.10'
memory: 64M
# reservations:
# cpus: '0.05'
# memory: 32M
networks:
swarmpit:
+23
View File
@@ -0,0 +1,23 @@
version: "3.9"
services:
swarmpit_db:
image: couchdb:2.3.0
volumes:
- swarmpit_db:/opt/couchdb/data
networks:
- swarmpit
deploy:
resources:
limits:
cpus: '0.30'
memory: 256M
# reservations:
# cpus: '0.15'
# memory: 128M
volumes:
swarmpit_db:
networks:
swarmpit:
+23
View File
@@ -0,0 +1,23 @@
version: "3.9"
services:
swarmpit_influxdb:
image: influxdb:1.7
volumes:
- swarmpit_influxdb:/var/lib/influxdb
networks:
- swarmpit
deploy:
resources:
limits:
cpus: '0.60'
memory: 512M
# reservations:
# cpus: '0.30'
# memory: 128M
volumes:
swarmpit_influxdb:
networks:
swarmpit:
+46
View File
@@ -0,0 +1,46 @@
version: "3.9"
services:
swarmpit:
image: swarmpit/swarmpit:latest
environment:
SWARMPIT_DB: http://swarmpit_db:5984
SWARMPIT_INFLUXDB: http://swarmpit_influxdb:8086
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 60s
timeout: 10s
retries: 3
networks:
- swarmpit
- caddy
deploy:
resources:
limits:
cpus: '0.50'
memory: 1024M
# reservations:
# cpus: '0.25'
# memory: 512M
# placement:
# constraints:
# - node.role == manager
depends_on:
- swarmpit_db
- swarmpit_influxdb
- swarmpit_agent
labels:
caddy: swarm.marcpartensky.com
caddy.reverse_proxy: "{{upstreams http 8080}}"
traefik.enable: "true"
traefik.http.routers.swarmpit.rule: Host(`swarm.marcpartensky.com`)
traefik.http.routers.swarmpit.entrypoints: websecure
traefik.http.routers.swarmpit.tls.certresolver: tls
traefik.http.services.swarmpit.loadbalancer.server.port: 8080
networks:
swarmpit:
caddy:
external: true
+28
View File
@@ -0,0 +1,28 @@
version: "3.9"
services:
tableau:
image: pvtmert/tableau
restart: unless-stopped
env_file:
- ../data/secrets/tableau.env
networks:
- caddy
labels:
caddy: tableau.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.tableau.rule: Host(`tableau.marcpartensky.com`)
traefik.http.routers.tableau.entrypoints: websecure
traefik.http.routers.tableau.tls.certresolver: tls
traefik.http.services.tableau.loadbalancer.server.port: 8080
networks:
caddy:
external: true
# docker run \
# -e LICENSE_KEY=<key> \
# -e TABLEAU_USERNAME=<username> \
# -e TABLEAU_PASSWORD=<password> \
# --hostname=<static (internal) name of host machine> \
# -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
+63
View File
@@ -0,0 +1,63 @@
version: "3.9"
services:
todolist:
image: marcpartensky/je-todoapp-react
restart: unless-stopped
environment:
PORT: 80
SPRING_API_URL: https://api.todolist.marcpartensky.com
depends_on:
- todolist_api
networks:
- caddy
labels:
caddy: todolist.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.todolist.rule: Host(`todolist.marcpartensky.com`)
traefik.http.routers.todolist.entrypoints: websecure
traefik.http.routers.todolist.tls.certresolver: tls
traefik.http.services.todolist.loadbalancer.server.port: 80
# entrypoint: ["/bin/sh", "-c", "'SPRING_API_URL=https://api.todolist.marcpartensky.com serve -s build'"]
todolist_api:
image: marcpartensky/je-todoapp-spring-api
restart: unless-stopped
env_file:
- ../data/secrets/todolist.env
environment:
PORT: 80
POSTGRES_HOST: todolist_postgres
depends_on:
- todolist_postgres
networks:
- caddy
- todolist
labels:
caddy: api.todolist.marcpartensky.com
caddy.reverse_proxy: "{{upstreams http 8080}}"
traefik.enable: "true"
traefik.http.routers.todolist_api.rule: Host(`api.todolist.marcpartensky.com`)
traefik.http.routers.todolist_api.entrypoints: websecure
traefik.http.routers.todolist_api.tls.certresolver: tls
traefik.http.services.todolist_api.loadbalancer.server.port: 8080
todolist_postgres:
image: postgres
restart: unless-stopped
volumes:
- todolist_postgres:/var/lib/postgresql/data
env_file:
- ../data/secrets/todolist.env
networks:
- caddy
- todolist
volumes:
todolist_postgres:
networks:
todolist:
caddy:
external: true
+50
View File
@@ -0,0 +1,50 @@
version: "3.9"
services:
traefik:
image: traefik
restart: unless-stopped
command:
## Provider Settings - https://docs.traefik.io/providers/docker/#provider-configuration ##
# - --providers.docker.exposedbydefault=false # <== Don't expose every container to traefik, only expose enabled ones
- --providers.file.filename=/dynamic.yaml # <== Referring to a dynamic configuration file
# - --providers.docker.network=web # <== Operate on the docker network named web
- --providers.docker=true # <== Enabling docker as the provider for traefik
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
- --api.insecure=false # <== Enabling insecure api, NOT RECOMMENDED FOR PRODUCTION
- --api.dashboard=true
- --api.debug=true # <== Enabling additional endpoints for debugging and profiling
## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.tls.acme.tlschallenge=true # <== Enable TLS-ALPN-01 to generate and renew ACME certs
- --certificatesresolvers.tls.acme.email=marc.partensky@gmail.com
- --certificatesresolvers.tls.acme.storage=/letsencrypt/acme.json # Log Settings (options: ERROR, DEBUG, PANIC, FATAL, WARN, INFO) - https://docs.traefik.io/observability/logs/ ##
- --log.level=DEBUG # <== Setting the level of the logs from traefik
- --entrypoints.web.http.redirections.entryPoint.to=websecure
- --entrypoints.web.http.redirections.entryPoint.scheme=https
- --entrypoints.web.http.redirections.entrypoint.permanent=true
ports:
- "80:80"
- "443:443"
networks:
- caddy
volumes:
- ../data/traefik/letsencrypt:/letsencrypt
# - ./data/traefik/dynamic.yaml:/dynamic.yaml
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
traefik.enable: true
traefik.http.routers.traefik.rule: Host(`traefik.marcpartensky.com`)
traefik.http.routers.traefik.service: api@internal
traefik.http.routers.traefik.entrypoints: websecure
traefik.http.routers.traefik.tls.certresolver: tls
traefik.docker.network: caddy
# traefik.http.routers.redirs.entrypoints: web
# traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
# traefik.http.routers.redirs.middlewares: redirect-to-https
# traefik.http.routers.redirs.rule: hostregexp(`{host:.+}`)
networks:
caddy:
external: true
+31
View File
@@ -0,0 +1,31 @@
version: "3.9"
services:
valentin_website:
image: valentincolin/website
restart: unless-stopped
environment:
PRODUCTION: "True"
env_file:
- ../data/secrets/valentin.env
build:
context: ./
dockerfile: Dockerfile
networks:
- caddy
entrypoint: sh -c "
./manage.py migrate &&
/app/entrypoint.sh
"
labels:
caddy: valentin-colin.fr
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.valentincolin_website.rule: Host(`valentin-colin.com`)
traefik.http.routers.valentincolin_website.entrypoints: websecure
traefik.http.routers.valentincolin_website.tls.certresolver: tls
traefik.http.services.valentincolin_website.loadbalancer.server.port: 80
networks:
caddy:
external: true
+44
View File
@@ -0,0 +1,44 @@
version: "3.9"
services:
ldap_sync:
restart: unless-stopped
build:
context: .
dockerfile: Dockerfile
volumes:
- ./example.config.toml:/config.toml:ro
# ./root.cert:/usr/src/vaultwarden_ldap/root.cert:ro
environment:
CONFIG_PATH: /config.toml
RUST_BACKTRACE: 1
depends_on:
- vaultwarden
vaultwarden:
image: vaultwarden/server
environment:
ADMIN_TOKEN: admin
SIGNUPS_ALLOWED: 'false'
INVITATIONS_ALLOWED: 'true'
networks:
- caddy
labels:
caddy: vault.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.gitea.rule: Host(`vault.marcpartensky.com`)
traefik.http.routers.gitea.entrypoints: websecure
traefik.http.routers.gitea.tls.certresolver: tls
traefik.http.services.gitea.loadbalancer.server.port: 80
ldap_admin:
image: osixia/phpldapadmin
ports:
- 8001:80
environment:
PHPLDAPADMIN_HTTPS: 'false'
PHPLDAPADMIN_LDAP_HOSTS: ldap
networks:
caddy:
external: true
+110
View File
@@ -0,0 +1,110 @@
version: "3.9"
services:
website:
image: marcpartensky/website
restart: unless-stopped
env_file:
- ../data/secrets/website.env
environment:
VIRTUAL_HOST: marcpartensky.com
VIRTUAL_PORT: 80
# SECURE_SSL_REDIRECT: false
# KEY: /app/privkey.pem
# CERT: /app/fullchain.pem
# entrypoint: "daphne -e ssl:443:privateKey=$$KEY:certKey=$$CERT django_project.asgi:application"
# entrypoint: daphne -b website -e ssl:443:privateKey=/app/privkey.pem:certKey=/app/fullchain.pem django_project.asgi:application
# command:
# - "80"
# - "0.0.0.0"
depends_on:
- redis
- postgres
- caddy
volumes:
- website_media:/app/media
networks:
- website
- caddy
labels:
caddy: marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
# caddy.tls: "internal"
traefik.enable: "true"
traefik.http.routers.website.rule: Host(`marcpartensky.com`)
traefik.http.routers.website.entrypoints: websecure
traefik.http.routers.website.tls.certresolver: tls
traefik.http.services.website.loadbalancer.server.port: 80
deploy:
# mode: global
update_config:
parallelism: 1
delay: 5s
order: start-first
failure_action: rollback
rollback_config:
order: start-first
resources:
reservations:
cpus: "1"
memory: "500M"
postgres:
image: postgres
restart: unless-stopped
volumes:
- postgres:/var/lib/postgresql/data
env_file:
- ../data/secrets/postgres.env
networks:
- website
pgweb:
image: sosedoff/pgweb
restart: unless-stopped
env_file:
- ../data/secrets/postgres.env
networks:
- website
- caddy
depends_on:
- postgres
healthcheck:
test: ["CMD", "wget", "-q", "localhost:8081", "-O", "/dev/null"]
labels:
caddy: db.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8081}}"
# caddy.reverse_proxy.header_up.Host: "{upstream_hostport}" # redundant
# caddy.reverse_proxy.header_up.X-Real-IP: "{host}"
# caddy.reverse_proxy.header_up.X-Forwarded-For: "{host}" # redundant
caddy.basicauth: /* bcrypt
caddy.basicauth.admin: JDJhJDEyJDVRUXdqQllCR2dCSEZ0ZUlaVUZTRE95WXpROFdUcFdXSm4wVGE2TmE4cEkxNHc5Si4venJxCg==
traefik.enable: "true"
traefik.http.routers.website.rule: Host(`db.marcpartensky.com`)
traefik.http.routers.website.entrypoints: websecure
traefik.http.routers.website.tls.certresolver: tls
traefik.http.services.website.loadbalancer.server.port: 8081
# postgres_adminer:
# adminer:
# image: adminer
# restart: unless-stopped
# ports:
# - 8080:8080
redis:
image: redis:alpine
restart: unless-stopped
networks:
- website
healthcheck:
test: ["CMD", "redis-cli","ping"]
volumes:
website_media:
postgres:
networks:
website:
caddy:
external: true
+44
View File
@@ -0,0 +1,44 @@
version: "3.9"
services:
wordpress_je:
image: wordpress
restart: unless-stopped
networks:
- caddy
- wordpress_je
environment:
WORDPRESS_DB_HOST: wordpress_je_mysql
env_file:
- ../data/secrets/wordpress_template.env
volumes:
- wordpress_je:/var/www/html
depends_on:
- wordpress_je_mysql
labels:
caddy: wordpress.je.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.wordpress.rule: Host(`wordpress.marcpartensky.com`)
traefik.http.routers.wordpress.entrypoints: websecure
traefik.http.routers.wordpress.tls.certresolver: tls
traefik.http.services.wordpress.loadbalancer.server.port: 80
wordpress_je_mysql:
image: mysql
restart: unless-stopped
env_file:
- ../data/secrets/wordpress_template.env
networks:
- wordpress_je
volumes:
- wordpress_je_mysql:/var/lib/mysql
volumes:
wordpress_je:
wordpress_je_mysql:
networks:
wordpress_je:
caddy:
external: true
+49
View File
@@ -0,0 +1,49 @@
version: "3.9"
services:
wordpress_oxivia:
image: wordpress
restart: unless-stopped
networks:
- caddy
- wordpress
environment:
WORDPRESS_DB_HOST: wordpress_oxivia_mysql
env_file:
- ../data/secrets/wordpress_oxivia.env
volumes:
- wordpress_oxivia:/var/www/html
depends_on:
- wordpress_oxivia_mysql
labels:
caddy: oxivia.wordpress.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.wordpress_oxivia.rule: Host(`oxivia.wordpress.marcpartensky.com`)
traefik.http.routers.wordpress_oxivia.entrypoints: websecure
traefik.http.routers.wordpress_oxivia.tls.certresolver: tls
traefik.http.services.wordpress_oxivia.loadbalancer.server.port: 80
wordpress_oxivia_mysql:
image: mysql
restart: unless-stopped
env_file:
- ../data/secrets/wordpress_oxivia.env
networks:
- wordpress
volumes:
- wordpress_oxivia_mysql:/var/lib/mysql
command:
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# healthcheck:
# test: CMD /bin/sh -c 'mysqladmin ping --user=$MYSQL_USER --password=$MYSQL_PASSWORD'
volumes:
wordpress_oxivia:
wordpress_oxivia_mysql:
networks:
wordpress:
caddy:
external: true
+57
View File
@@ -0,0 +1,57 @@
version: "3.9"
services:
wordpress:
image: wordpress
restart: unless-stopped
networks:
- caddy
- wordpress
env_file:
- ../data/secrets/wordpress.env
volumes:
- wordpress:/var/www/html
depends_on:
- wordpress_mysql
labels:
caddy: wordpress.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.wordpress.rule: Host(`wordpress.marcpartensky.com`)
traefik.http.routers.wordpress.entrypoints: websecure
traefik.http.routers.wordpress.tls.certresolver: tls
traefik.http.services.wordpress.loadbalancer.server.port: 80
wordpress_mysql:
image: mysql
restart: unless-stopped
env_file:
- ../data/secrets/wordpress.env
networks:
- wordpress
volumes:
- wordpress_mysql:/var/lib/mysql
# healthcheck:
# test: CMD /bin/sh -c 'mysqladmin ping --user=$MYSQL_USER --password=$MYSQL_PASSWORD'
#
phpmyadmin:
image: phpmyadmin
restart: unless-stopped
env_file:
- ../data/secrets/wordpress.env
networks:
- wordpress
ports:
- "8880:80"
labels:
caddy: phpmyadmin.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
volumes:
wordpress:
wordpress_mysql:
networks:
wordpress:
caddy:
external: true
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

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