Self-hosting
Taktify runs as a Docker Compose stack of one container and a MariaDB database. You need a public HTTPS address and an SMTP account; the software is released under the MIT license and is free.
Requirements
In short: Docker Compose, MariaDB 10.6+ or MySQL 8, a public HTTPS address, SMTP. In detail you need:
Docker with the Compose plugin.
A public HTTPS address in front of the container, for example through a reverse proxy such as Caddy, Traefik or nginx that terminates TLS. Instagram, TikTok and OIDC call your instance back over the internet, and signed media links must be reachable from outside.
An SMTP account. New accounts verify their email address before they can create an organization, and invitations, review requests and failure notices go out by email.
Taktify runs as a single container (API, interface and background workers in one process) plus a MariaDB database. The compose.yaml file in the repository starts both.
First start
Copy
.env.exampleto.envand fill in at leastDB_PASSWORD,DB_ROOT_PASSWORD,Taktify__PublicBaseUrland theTaktify__Smtp__*values.Start the stack.
Check the health endpoint. The database schema is created automatically on the first start.
Point the reverse proxy at port 8080 (or
TAKTIFY_PORT) and open the public address. Register the first account, confirm the email address and create the first organization. Its creator becomes its Admin.
cp .env.example .env
docker compose up -d --build
The health endpoint answers with {"status":"ok"}:
curl http://localhost:8080/api/health
Configuration
Every setting can be set as an environment variable in .env. A double underscore replaces the colon: Taktify:Smtp:Host becomes Taktify__Smtp__Host, and list entries get an index such as Taktify__IdentityProviders__0__Issuer.
Taktify__PublicBaseUrl=https://taktify.example.org
Taktify__ForwardedHeaders__KnownNetworks__0=172.16.0.0/12
Taktify__Smtp__Host=smtp.example.org
Taktify__Smtp__Port=587
Taktify__Smtp__User=taktify@example.org
Taktify__Smtp__Password=change-me
Taktify__Smtp__From=Taktify <taktify@example.org>
Taktify__Smtp__UseStartTls=true
Taktify__PublicBaseUrlmust be the exact public HTTPS address without a trailing slash.Taktify__ForwardedHeaders__KnownNetworks__0must contain the network the reverse proxy connects from. Otherwise Taktify recognizes neither client IPs nor the HTTPS scheme. The example value covers the default Docker bridge networks.Leave
Taktify__Platforms__Fake__EnabledandTaktify__Ai__EnableFakeunset: outside development the fake platform and the fake AI connector are refused.Register the OAuth redirect URIs with Meta, TikTok and your OIDC provider. The paths are appended to your
PublicBaseUrl:
<PublicBaseUrl>/api/channels/oauth/instagram/callback
<PublicBaseUrl>/api/channels/oauth/tiktok/callback
<PublicBaseUrl>/api/auth/oidc/callback
Backups
Back up three volumes together:
db-data: the MariaDB data directory.media: uploaded and generated media files.keys: the ASP.NET Data Protection keys.
Warning: the keys encrypt stored OAuth tokens, client secrets and AI keys, and they sign sessions. If they are lost, every stored secret becomes unreadable (channels and connectors must be reconnected) and everyone is signed out. Always back the keys up together with the database.
Back up the database with a dump:
docker compose exec db mariadb-dump -u root -p"$DB_ROOT_PASSWORD" taktify > taktify.sql
Updates
Pull the new version from the repository and rebuild the stack. Migrations run on startup. The container stops gracefully within 75 seconds, so running publish jobs keep their progress.
git pull
docker compose up -d --build
Scaling
Taktify runs API and workers in one process (Taktify__Roles__Api and Taktify__Roles__Worker, both active by default). Running several replicas needs a shared media and keys volume and is not tested yet.
License
Taktify is released under the MIT license. You may run, modify and share it freely.