TryPost is an open source social media scheduler with team workspaces, a post composer, publishing queues, analytics, a REST API, and MCP tools.
Alternatively, create a Compose service, go to Advanced → Import from Base64, and paste this payload:
ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICB0cnlwb3N0OlxuICAgICMgUmVidWlsZCBvbmx5IGJyb3dzZXIgYXNzZXRzOiB0aGUgcHVibGlzaGVkIGJ1bmRsZSBwb2ludHMgYXQgbG9jYWxob3N0LlxuICAgIGJ1aWxkOlxuICAgICAgY29udGV4dDogLlxuICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IHxcbiAgICAgICAgRlJPTSBnaGNyLmlvL3RyeXBvc3RpdC90cnlwb3N0OjIuMC4wIEFTIGFzc2V0c1xuICAgICAgICBSVU4gYXBrIGFkZCAtLW5vLWNhY2hlIG5vZGVqcyBucG1cbiAgICAgICAgQVJHIFZJVEVfUkVWRVJCX0hPU1RcbiAgICAgICAgQVJHIFZJVEVfUkVWRVJCX1BPUlRcbiAgICAgICAgQVJHIFZJVEVfUkVWRVJCX1NDSEVNRVxuICAgICAgICBBUkcgVklURV9SRVZFUkJfQVBQX0tFWVxuICAgICAgICBSVU4gQVBQX1VSTD1odHRwOi8vbG9jYWxob3N0IG5wbSBydW4gYnVpbGRcbiAgICAgICAgRlJPTSBnaGNyLmlvL3RyeXBvc3RpdC90cnlwb3N0OjIuMC4wXG4gICAgICAgIENPUFkgLS1mcm9tPWFzc2V0cyAvdmFyL3d3dy9odG1sL3B1YmxpYy9idWlsZCAvdmFyL3d3dy9odG1sL3B1YmxpYy9idWlsZFxuICAgICAgYXJnczpcbiAgICAgICAgVklURV9SRVZFUkJfSE9TVDogXCIke1RSWVBPU1RfSE9TVDo/U2V0IFRSWVBPU1RfSE9TVH1cIlxuICAgICAgICBWSVRFX1JFVkVSQl9QT1JUOiBcIiR7VFJZUE9TVF9QVUJMSUNfUE9SVDotODB9XCJcbiAgICAgICAgVklURV9SRVZFUkJfU0NIRU1FOiBcIiR7VFJZUE9TVF9QVUJMSUNfU0NIRU1FOi1odHRwfVwiXG4gICAgICAgIFZJVEVfUkVWRVJCX0FQUF9LRVk6IFwiJHtSRVZFUkJfQVBQX0tFWTo/S2VlcCB0aGUgZ2VuZXJhdGVkIFJldmVyYiBrZXl9XCJcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudl9maWxlOlxuICAgICAgLSBwYXRoOiAuZW52XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZVxuICAgIGVudmlyb25tZW50OlxuICAgICAgQVBQX0VOVjogcHJvZHVjdGlvblxuICAgICAgQVBQX0RFQlVHOiBcImZhbHNlXCJcbiAgICAgIEFQUF9LRVk6IFwiJHtBUFBfS0VZOj9LZWVwIHRoZSBnZW5lcmF0ZWQgQVBQX0tFWX1cIlxuICAgICAgQVBQX1VSTDogXCIke0FQUF9VUkw6P1NldCBBUFBfVVJMfVwiXG4gICAgICBTRUxGX0hPU1RFRDogXCJ0cnVlXCJcbiAgICAgIFRSWVBPU1RfVEFSR0VUOiBwcm9kdWN0aW9uXG4gICAgICBEQl9DT05ORUNUSU9OOiBwZ3NxbFxuICAgICAgREJfSE9TVDogdHJ5cG9zdC1wb3N0Z3Jlc1xuICAgICAgREJfUE9SVDogXCI1NDMyXCJcbiAgICAgIERCX0RBVEFCQVNFOiB0cnlwb3N0XG4gICAgICBEQl9VU0VSTkFNRTogdHJ5cG9zdFxuICAgICAgREJfUEFTU1dPUkQ6IFwiJHtEQl9QQVNTV09SRDo/S2VlcCB0aGUgZ2VuZXJhdGVkIGRhdGFiYXNlIHBhc3N3b3JkfVwiXG4gICAgICBSRURJU19IT1NUOiB0cnlwb3N0LXJlZGlzXG4gICAgICBSRURJU19QT1JUOiBcIjYzNzlcIlxuICAgICAgUkVESVNfUEFTU1dPUkQ6IFwiJHtSRURJU19QQVNTV09SRDo/S2VlcCB0aGUgZ2VuZXJhdGVkIFJlZGlzIHBhc3N3b3JkfVwiXG4gICAgICBRVUVVRV9DT05ORUNUSU9OOiByZWRpc1xuICAgICAgQ0FDSEVfU1RPUkU6IHJlZGlzXG4gICAgICBTRVNTSU9OX0RSSVZFUjogZGF0YWJhc2VcbiAgICAgIFNFU1NJT05fU0VDVVJFX0NPT0tJRTogXCIke1NFU1NJT05fU0VDVVJFX0NPT0tJRTotZmFsc2V9XCJcbiAgICAgIEJST0FEQ0FTVF9DT05ORUNUSU9OOiByZXZlcmJcbiAgICAgIFJFVkVSQl9BUFBfSUQ6IFwiJHtSRVZFUkJfQVBQX0lEOj9LZWVwIHRoZSBnZW5lcmF0ZWQgUmV2ZXJiIGFwcCBJRH1cIlxuICAgICAgUkVWRVJCX0FQUF9LRVk6IFwiJHtSRVZFUkJfQVBQX0tFWTo/S2VlcCB0aGUgZ2VuZXJhdGVkIFJldmVyYiBrZXl9XCJcbiAgICAgIFJFVkVSQl9BUFBfU0VDUkVUOiBcIiR7UkVWRVJCX0FQUF9TRUNSRVQ6P0tlZXAgdGhlIGdlbmVyYXRlZCBSZXZlcmIgc2VjcmV0fVwiXG4gICAgICAjIFNlcnZlciBicm9hZGNhc3RzIHN0YXkgaW5zaWRlIHRoZSBjb250YWluZXI7IGJyb3dzZXIgdXNlcyBidWlsZCBhcmdzLlxuICAgICAgUkVWRVJCX0hPU1Q6IDEyNy4wLjAuMVxuICAgICAgUkVWRVJCX1BPUlQ6IFwiODA4MFwiXG4gICAgICBSRVZFUkJfU0NIRU1FOiBodHRwXG4gICAgICBQQVNTUE9SVF9QUklWQVRFX0tFWTogZmlsZTovLy92YXIvd3d3L2h0bWwvc3RvcmFnZS9vYXV0aC1wcml2YXRlLmtleVxuICAgICAgUEFTU1BPUlRfUFVCTElDX0tFWTogZmlsZTovLy92YXIvd3d3L2h0bWwvc3RvcmFnZS9vYXV0aC1wdWJsaWMua2V5XG4gICAgICBGSUxFU1lTVEVNX0RJU0s6IFwiJHtGSUxFU1lTVEVNX0RJU0s6LXB1YmxpY31cIlxuICAgICAgTUFJTF9NQUlMRVI6IFwiJHtNQUlMX01BSUxFUjotbG9nfVwiXG4gICAgICBMT0dfQ0hBTk5FTDogXCIke0xPR19DSEFOTkVMOi1zdGRlcnJ9XCJcbiAgICAgIExPR19MRVZFTDogXCIke0xPR19MRVZFTDotaW5mb31cIlxuICAgICAgTklHSFRXQVRDSF9FTkFCTEVEOiBcImZhbHNlXCJcbiAgICAgIFRFTEVTQ09QRV9FTkFCTEVEOiBcImZhbHNlXCJcbiAgICAgIFBPU1RIT0dfRU5BQkxFRDogXCJmYWxzZVwiXG4gICAgZW50cnlwb2ludDogW1wiL2Jpbi9zaFwiLCBcIi1lY1wiXVxuICAgIGNvbW1hbmQ6XG4gICAgICAtIHxcbiAgICAgICAgY2QgL3Zhci93d3cvaHRtbFxuICAgICAgICBpZiBbICEgLWYgc3RvcmFnZS9vYXV0aC1wcml2YXRlLmtleSBdICYmIFsgISAtZiBzdG9yYWdlL29hdXRoLXB1YmxpYy5rZXkgXTsgdGhlblxuICAgICAgICAgIHBocCBhcnRpc2FuIHBhc3Nwb3J0OmtleXMgLS1uby1pbnRlcmFjdGlvblxuICAgICAgICBlbGlmIFsgISAtcyBzdG9yYWdlL29hdXRoLXByaXZhdGUua2V5IF0gfHwgWyAhIC1zIHN0b3JhZ2Uvb2F1dGgtcHVibGljLmtleSBdOyB0aGVuXG4gICAgICAgICAgZWNobyAnSW5jb21wbGV0ZSBQYXNzcG9ydCBrZXkgcGFpcjogcmVzdG9yZSBib3RoIGtleXMgZnJvbSBiYWNrdXAuJyA+JjJcbiAgICAgICAgICBleGl0IDFcbiAgICAgICAgZmlcbiAgICAgICAgcGhwIGFydGlzYW4gbWlncmF0ZSAtLWZvcmNlIC0tbm8taW50ZXJhY3Rpb25cbiAgICAgICAgcGhwIDw8J1BIUCdcbiAgICAgICAgPD9waHBcbiAgICAgICAgcmVxdWlyZSAndmVuZG9yL2F1dG9sb2FkLnBocCc7XG4gICAgICAgICQkYXBwID0gcmVxdWlyZSAnYm9vdHN0cmFwL2FwcC5waHAnO1xuICAgICAgICAkJGFwcC0+bWFrZShJbGx1bWluYXRlXFxDb250cmFjdHNcXENvbnNvbGVcXEtlcm5lbDo6Y2xhc3MpLT5ib290c3RyYXAoKTtcbiAgICAgICAgaWYgKCEgQXBwXFxNb2RlbHNcXFVzZXI6OnF1ZXJ5KCktPmV4aXN0cygpKSB7XG4gICAgICAgICAgICAkJGVtYWlsID0gZ2V0ZW52KCdJTklUSUFMX1VTRVJfRU1BSUwnKTtcbiAgICAgICAgICAgICQkcGFzc3dvcmQgPSBnZXRlbnYoJ0lOSVRJQUxfVVNFUl9QQVNTV09SRCcpO1xuICAgICAgICAgICAgaWYgKCEgZmlsdGVyX3ZhcigkJGVtYWlsLCBGSUxURVJfVkFMSURBVEVfRU1BSUwpIHx8IHN0cmxlbigkJHBhc3N3b3JkID86ICcnKSA8IDE2KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1NldCBJTklUSUFMX1VTRVJfRU1BSUwgYW5kIGEgcGFzc3dvcmQgb2YgYXQgbGVhc3QgMTYgY2hhcmFjdGVycyBmb3IgZmlyc3Qgc3RhcnR1cC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEFwcFxcQWN0aW9uc1xcVXNlclxcQ3JlYXRlVXNlcjo6ZXhlY3V0ZShbXG4gICAgICAgICAgICAgICAgJ25hbWUnID0+IGdldGVudignSU5JVElBTF9VU0VSX05BTUUnKSA/OiAnQWRtaW5pc3RyYXRvcicsXG4gICAgICAgICAgICAgICAgJ2VtYWlsJyA9PiAkJGVtYWlsLFxuICAgICAgICAgICAgICAgICdwYXNzd29yZCcgPT4gJCRwYXNzd29yZCxcbiAgICAgICAgICAgICAgICAnZW1haWxfdmVyaWZpZWRfYXQnID0+IG5vdygpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgUEhQXG4gICAgICAgIGV4ZWMgL3Vzci9sb2NhbC9iaW4vZW50cnlwb2ludC5zaFxuICAgIGV4cG9zZTpcbiAgICAgIC0gXCI4MFwiXG4gICAgdm9sdW1lczpcbiAgICAgIC0gdHJ5cG9zdC1zdG9yYWdlOi92YXIvd3d3L2h0bWwvc3RvcmFnZVxuICAgIGRlcGVuZHNfb246XG4gICAgICB0cnlwb3N0LXBvc3RncmVzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgdHJ5cG9zdC1yZWRpczpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcImN1cmxcIiwgXCItLWZhaWxcIiwgXCItLXNpbGVudFwiLCBcImh0dHA6Ly8xMjcuMC4wLjEvdXBcIl1cbiAgICAgIHN0YXJ0X3BlcmlvZDogMTIwc1xuICAgICAgaW50ZXJ2YWw6IDMwc1xuICAgICAgdGltZW91dDogMTBzXG4gICAgICByZXRyaWVzOiA1XG4gICAgc3RvcF9ncmFjZV9wZXJpb2Q6IDYwc1xuICAgIGxvZ2dpbmc6ICZsb2dnaW5nXG4gICAgICBkcml2ZXI6IGpzb24tZmlsZVxuICAgICAgb3B0aW9uczpcbiAgICAgICAgbWF4LXNpemU6IFwiMTBtXCJcbiAgICAgICAgbWF4LWZpbGU6IFwiM1wiXG5cbiAgdHJ5cG9zdC1wb3N0Z3JlczpcbiAgICBpbWFnZTogcG9zdGdyZXM6MTguNi1ib29rd29ybVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1NUR1JFU19EQjogdHJ5cG9zdFxuICAgICAgUE9TVEdSRVNfVVNFUjogdHJ5cG9zdFxuICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6IFwiJHtEQl9QQVNTV09SRDo/S2VlcCB0aGUgZ2VuZXJhdGVkIGRhdGFiYXNlIHBhc3N3b3JkfVwiXG4gICAgdm9sdW1lczpcbiAgICAgIC0gdHJ5cG9zdC1wb3N0Z3JlczovdmFyL2xpYi9wb3N0Z3Jlc3FsXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJwZ19pc3JlYWR5IC1VIHRyeXBvc3QgLWQgdHJ5cG9zdFwiXVxuICAgICAgaW50ZXJ2YWw6IDEwc1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDVcbiAgICAgIHN0YXJ0X3BlcmlvZDogMjBzXG4gICAgc3RvcF9ncmFjZV9wZXJpb2Q6IDYwc1xuICAgIGxvZ2dpbmc6ICpsb2dnaW5nXG5cbiAgdHJ5cG9zdC1yZWRpczpcbiAgICBpbWFnZTogcmVkaXM6OC4xMC4yLWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBSRURJU19QQVNTV09SRDogXCIke1JFRElTX1BBU1NXT1JEOj9LZWVwIHRoZSBnZW5lcmF0ZWQgUmVkaXMgcGFzc3dvcmR9XCJcbiAgICAgIFJFRElTQ0xJX0FVVEg6IFwiJHtSRURJU19QQVNTV09SRDo/S2VlcCB0aGUgZ2VuZXJhdGVkIFJlZGlzIHBhc3N3b3JkfVwiXG4gICAgY29tbWFuZDogW1wiL2Jpbi9zaFwiLCBcIi1lY1wiLCBcImV4ZWMgcmVkaXMtc2VydmVyIC0tcmVxdWlyZXBhc3MgXFxcIiQkUkVESVNfUEFTU1dPUkRcXFwiIC0tYXBwZW5kb25seSB5ZXMgLS1tYXhtZW1vcnktcG9saWN5IG5vZXZpY3Rpb25cIl1cbiAgICB2b2x1bWVzOlxuICAgICAgLSB0cnlwb3N0LXJlZGlzOi9kYXRhXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTURcIiwgXCJyZWRpcy1jbGlcIiwgXCJwaW5nXCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuICAgICAgc3RhcnRfcGVyaW9kOiAxMHNcbiAgICBzdG9wX2dyYWNlX3BlcmlvZDogMzBzXG4gICAgbG9nZ2luZzogKmxvZ2dpbmdcblxudm9sdW1lczpcbiAgdHJ5cG9zdC1zdG9yYWdlOlxuICB0cnlwb3N0LXBvc3RncmVzOlxuICB0cnlwb3N0LXJlZGlzOiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5hcHBfa2V5ID0gXCIke2Jhc2U2NDozMn1cIlxuZGF0YWJhc2VfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6NDh9XCJcbnJlZGlzX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjQ4fVwiXG5yZXZlcmJfa2V5ID0gXCIke2hhc2g6MzJ9XCJcbnJldmVyYl9zZWNyZXQgPSBcIiR7cGFzc3dvcmQ6NjR9XCJcbnJldmVyYl9hcHBfaWQgPSBcIiR7dXVpZH1cIlxuaW5pdGlhbF9wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuXG5bY29uZmlnXVxuZW52ID0gW1xuICBcIlRSWVBPU1RfSE9TVD0ke21haW5fZG9tYWlufVwiLFxuICBcIkFQUF9VUkw9aHR0cDovLyR7bWFpbl9kb21haW59XCIsXG4gIFwiQVBQX0tFWT1iYXNlNjQ6JHthcHBfa2V5fVwiLFxuICBcIkRCX1BBU1NXT1JEPSR7ZGF0YWJhc2VfcGFzc3dvcmR9XCIsXG4gIFwiUkVESVNfUEFTU1dPUkQ9JHtyZWRpc19wYXNzd29yZH1cIixcbiAgXCJSRVZFUkJfQVBQX0lEPSR7cmV2ZXJiX2FwcF9pZH1cIixcbiAgXCJSRVZFUkJfQVBQX0tFWT0ke3JldmVyYl9rZXl9XCIsXG4gIFwiUkVWRVJCX0FQUF9TRUNSRVQ9JHtyZXZlcmJfc2VjcmV0fVwiLFxuICBcIlRSWVBPU1RfUFVCTElDX1NDSEVNRT1odHRwXCIsXG4gIFwiVFJZUE9TVF9QVUJMSUNfUE9SVD04MFwiLFxuICBcIlNFU1NJT05fU0VDVVJFX0NPT0tJRT1mYWxzZVwiLFxuICBcIklOSVRJQUxfVVNFUl9FTUFJTD1hZG1pbkBleGFtcGxlLmNvbVwiLFxuICBcIklOSVRJQUxfVVNFUl9QQVNTV09SRD0ke2luaXRpYWxfcGFzc3dvcmR9XCIsXG4gIFwiSU5JVElBTF9VU0VSX05BTUU9QWRtaW5pc3RyYXRvclwiLFxuICBcIk1BSUxfTUFJTEVSPWxvZ1wiXG5dXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcInRyeXBvc3RcIlxucG9ydCA9IDgwXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiIgp9
The exact Docker Compose and template configuration this template deploys.
Deploys TryPost 2.0.0, requested in #1214, with PostgreSQL, authenticated Redis, persistent media/API keys, Horizon workers, the scheduler, and Reverb WebSockets.
Import the template into a Dokploy Docker Compose service. Change INITIAL_USER_EMAIL to your address before deploying. The generated INITIAL_USER_PASSWORD is the first login password; keep all generated application/database/Redis/Reverb secrets.
Point your domain at Dokploy and configure HTTPS in Domains, with the trypost service on port 80. Set these environment values before using real accounts:
dotenv
TRYPOST_HOST contains only the hostname. The generated HTTP domain and port 80 support initial local checks. For a custom public port, include it in APP_URL and set TRYPOST_PUBLIC_PORT to the same value.
Deploy and allow the asset build and database migrations to finish. The template starts from the official versioned image and rebuilds only its browser assets, because the published bundle points WebSockets at localhost:8080. It leaves the application source and production PHP dependencies intact. A build-capable Docker Compose installation is required. Allow several minutes and sufficient RAM/disk for the first build.
Open the domain and sign in using INITIAL_USER_EMAIL and the generated password from Dokploy Environment. The template creates this verified user and workspace only when the database has no users. Public registration stays disabled in upstream self-hosted mode. Changing these bootstrap variables later does not reset an existing account or password; use the app's account settings/password recovery instead. After the first successful deployment, the initial password variable can be removed.
Finish any welcome steps, connect the platforms you use, and create a draft or schedule a test post. Additional users join through invitations. Configure delivered email before relying on invitations or password recovery.
The public hostname, scheme, port, and Reverb public key are browser build inputs. After changing any of them, redeploy with a rebuild; changing only runtime VITE_* variables cannot alter compiled assets. Both the app and WebSockets use the same domain/port through the bundled Nginx proxy; do not expose Redis, PostgreSQL, or Reverb's internal port 8080.
Dokploy generates APP_KEY, DB_PASSWORD, REDIS_PASSWORD, REVERB_APP_ID, REVERB_APP_KEY, REVERB_APP_SECRET, and the first-user password. On first startup, RSA signing keys are generated once into the persistent storage volume and loaded through Passport's file:// settings. A partial/missing key pair after setup must be restored from backup; never replace a valid pair during an upgrade.
No Telegram, SMTP, AI, Stripe, or social-provider credentials are required to start or log in. SELF_HOSTED=true bypasses cloud billing, and telemetry is disabled. Add only the integrations you need in Dokploy Environment; the optional .env is passed through to the container. Redeploy after runtime changes so Laravel's configuration cache is rebuilt. See the environment reference for the full versioned inventory and defaults.
The default MAIL_MAILER=log records messages without delivering them. The initial user is provisioned as verified, so a mail server is not needed for first login. For invitations and password resets, configure your SMTP provider and test delivery:
dotenv
Use your provider's TLS settings (smtps and port 465 for implicit TLS). API transports can use the supported Postmark, Resend, or SES credentials instead.
OAuth publishing integrations need the provider's client ID, client secret, and exact callback URI registered in its developer portal. Use the *_CLIENT_REDIRECT variable names for this application:
| Platform | Variable prefix | Callback path on APP_URL |
|---|---|---|
LINKEDIN | /accounts/linkedin/callback | |
| X | X | /accounts/x/callback |
| TikTok | TIKTOK | /accounts/tiktok/callback |
| YouTube | GOOGLE | /accounts/youtube/callback |
FACEBOOK | /accounts/facebook/callback | |
INSTAGRAM | /accounts/instagram/callback | |
| Threads | THREADS | /accounts/threads/callback |
PINTEREST | /accounts/pinterest/callback | |
| Discord | DISCORD | /accounts/discord/callback |
| Google Business | GOOGLE_BUSINESS | /accounts/google-business/callback |
Discord additionally needs DISCORD_BOT_TOKEN. Telegram publishing uses TELEGRAM_BOT_TOKEN, TELEGRAM_BOT_USERNAME, and TELEGRAM_WEBHOOK_SECRET; only configure it if you want Telegram. Follow upstream's webhook setup when enabling it. Bluesky/Mastodon use their connection flows in the UI. Provider app review, scopes, account eligibility, and public HTTPS still apply. Google/GitHub social login is separate from publishing and disabled by default.
AI features need the selected provider's API key; media imports need the selected service's credentials. Local public media storage works without S3/R2. When selecting object storage, provide the matching credentials, bucket, region/endpoint, and public media URL. Social platforms must be able to fetch media from your public HTTPS deployment.
Use one application replica with the bundled scheduler. The container runs upstream's Nginx, PHP-FPM, Reverb, Horizon, and scheduler processes; its root supervisor performs initialization and PHP-FPM workers use www-data. The web health check covers /up, so also monitor Horizon, Redis, database access, failed jobs, and WebSocket connectivity.
Back up PostgreSQL, Redis, the entire storage volume, and Dokploy Environment together. Storage includes uploaded media and RSA signing keys; APP_KEY is required to decrypt saved credentials. Redis persists queued jobs with AOF. Do not flush it or delete its volume while publishing jobs are pending. Coordinate maintenance around long-running jobs; the container allows a 60-second graceful stop, while some upstream jobs can run longer.
Keep APP_URL, domain settings, and browser build inputs in sync. Rebuild after changes to the public connection settings or the pinned upstream version. Back up before upgrades, read upstream's migration notes, and validate an upgrade against a restored copy first. This template targets a fresh 2.0.0 installation; it does not migrate an existing deployment from another template or version. Test procedures and verified boundaries are in testing.md.
Version: 1.5.4
Shoutrrr is an open source social media scheduler for drafting, scheduling, and publishing posts across multiple accounts and workspaces.
Version: latest
Mixpost is an open-source social media management tool that allows you to create, schedule, and publish posts across multiple social media platforms from a single interface.
Version: v6.2.0
Cal.com is a scheduling and booking tool and an alternative to Calendly. Self-host it on your own server with Dokploy, which deploys Cal.com as a Docker Compose service in a few clicks.
Version: 1.5.0
Easy!Appointments is a highly customizable web application that allows customers to book appointments with you via a sophisticated web interface.
Version: latest
Self-hosted marketing operations dashboard for product-led growth, checkout analytics, paid media, SEO signals, and Stripe readiness.
Version: 5.1.1
Mautic is the world's largest open-source marketing automation project. It allows you to automate the process of finding and nurturing contacts through landing pages and forms, sending email, text messages, web notifications, and tracking your contacts.
Dokploy is a free, open source deployment platform. Deploy TryPost and 585+ other templates on your own infrastructure with a single click.