This directory contains the installation scripts and configuration files for Ackify Community Edition.
The interactive installation script will guide you through the entire configuration process:
bash <(curl -fsSL https://raw.githubusercontent.com/kolapsis/ackify/main/install/install.sh)The script will prompt you for:
-
Basic Configuration
- Application Base URL (e.g.,
https://ackify.example.com) - Organization Name
- Application Base URL (e.g.,
-
OAuth2 Authentication (Optional)
- Enable/disable OAuth
- OAuth Provider (Google, GitHub, GitLab, or custom)
- Client ID and Client Secret
- Email domain restriction (optional)
- Auto-login configuration (optional)
-
SMTP Configuration (Optional)
- Enable/disable SMTP for email notifications
- SMTP server settings (host, port, credentials)
- Email sender configuration
- TLS/STARTTLS settings
-
MagicLink Authentication (Optional)
- Auto-enabled when SMTP is configured
- Option to disable if needed
-
Admin Users (Required)
- Configure at least one admin email address
- Admins have access to document management and reminder features
-
Document Storage (Optional)
- None (URL-only mode)
- Local filesystem storage
- S3-compatible storage (AWS, MinIO, Wasabi, etc.)
The script will automatically:
- Download the necessary configuration files (docker compose & .env.example)
- Generate secure secrets (cookie secret, Ed25519 key, database password)
- Create a ready-to-use
.envfile - Validate that at least one authentication method is enabled
-
Review the configuration:
cd ackify-ce cat .env -
Start Ackify:
docker compose up -d
-
Check logs:
docker compose logs -f ackify-ce
-
Access the application: Open your browser and navigate to the configured base URL
-
Verify health:
curl http://localhost:8080/health
If you prefer to configure manually:
-
Download configuration files:
mkdir ackify-ce && cd ackify-ce curl -fsSL https://raw.githubusercontent.com/kolapsis/ackify/main/install/compose.yml -o compose.yml curl -fsSL https://raw.githubusercontent.com/kolapsis/ackify/main/install/.env.example -o .env
-
Generate secrets:
# Cookie secret (for session encryption) openssl rand -base64 32 # Ed25519 private key (for signatures) openssl rand 64 | base64 -w 0 # Database password openssl rand -base64 24
-
Edit
.envfile:- Configure your application URL and organization name
- Set up at least one authentication method (OAuth or MagicLink)
- Add the generated secrets
- Configure at least one admin user (required)
- Configure optional features (SMTP for email reminders and MagicLink)
-
Start the application:
docker compose up -d
Ackify CE supports two authentication methods. At least one must be enabled.
OAuth allows users to sign in using existing accounts from popular providers.
Supported Providers:
- GitHub
- GitLab (including self-hosted)
- Custom OAuth2 provider
Required Variables:
OAUTH_PROVIDER=google
OAUTH_CLIENT_ID=your_client_id
OAUTH_CLIENT_SECRET=your_client_secretSetup Links:
MagicLink provides passwordless authentication via email. Users receive a secure link to sign in.
Requirements:
- SMTP server configuration (MAIL_HOST must be set)
When to use:
- Simplified user experience (no password management)
- Internal applications where email domain is trusted
- Combination with OAuth for flexible authentication
Ackify CE can optionally store uploaded documents, allowing users to upload files directly instead of providing URLs.
None (Default):
- Users must provide document URLs
- No local storage required
- Simplest configuration
Local Storage:
- Documents stored on the server filesystem
- Uses Docker volume for persistence
- Best for single-server deployments
ACKIFY_STORAGE_TYPE=local
ACKIFY_STORAGE_LOCAL_PATH=/data/documents
ACKIFY_STORAGE_MAX_SIZE_MB=50S3-Compatible Storage:
- Works with AWS S3, MinIO, Wasabi, DigitalOcean Spaces, etc.
- Best for scalable/distributed deployments
- Supports any S3-compatible provider
ACKIFY_STORAGE_TYPE=s3
ACKIFY_STORAGE_MAX_SIZE_MB=50
ACKIFY_STORAGE_S3_ENDPOINT=https://s3.amazonaws.com
ACKIFY_STORAGE_S3_BUCKET=ackify-documents
ACKIFY_STORAGE_S3_ACCESS_KEY=your_access_key
ACKIFY_STORAGE_S3_SECRET_KEY=your_secret_key
ACKIFY_STORAGE_S3_REGION=us-east-1
ACKIFY_STORAGE_S3_USE_SSL=trueMinIO is a popular open-source S3-compatible storage solution:
ACKIFY_STORAGE_TYPE=s3
ACKIFY_STORAGE_S3_ENDPOINT=http://minio:9000
ACKIFY_STORAGE_S3_BUCKET=ackify-documents
ACKIFY_STORAGE_S3_ACCESS_KEY=minioadmin
ACKIFY_STORAGE_S3_SECRET_KEY=minioadmin
ACKIFY_STORAGE_S3_REGION=us-east-1
ACKIFY_STORAGE_S3_USE_SSL=false- PDF documents (.pdf)
- Images (.png, .jpg, .jpeg, .gif, .webp)
- Office documents (.doc, .docx)
- Text files (.txt)
- HTML files (.html, .htm)
Ackify can collect anonymous usage metrics to help improve the project.
Business metrics only:
- Number of documents created
- Number of signatures/confirmations
- Number of webhooks configured
- Number of email reminders sent
- No personal data
- No user information (names, emails, IPs)
- No document content
- No authentication details
- GDPR compliant - No personal data is ever collected
- Non-intrusive - Runs in background, no impact on performance
- Opt-in - Disabled by default, you choose to enable it
# Enable anonymous telemetry (default: false)
ACKIFY_TELEMETRY=trueWe encourage you to enable telemetry to help us improve Ackify for everyone!
SMTP is used for:
- Email reminders for document signatures
- MagicLink authentication
Popular SMTP Providers:
Gmail:
- Enable 2FA on your Google account
- Create an App Password at https://myaccount.google.com/apppasswords
- Use settings:
MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=your-email@gmail.com MAIL_PASSWORD=your-app-password
SMTP2GO: https://www.smtp2go.com/ SendGrid: https://sendgrid.com/ Mailgun: https://www.mailgun.com/
See .env.example for a complete list of configuration variables with detailed comments.
APP_BASE_URL=https://your-domain.com
APP_ORGANISATION="Your Organization"
POSTGRES_USER=ackifyr
POSTGRES_PASSWORD=generated_password
POSTGRES_DB=ackify
OAUTH_COOKIE_SECRET=generated_secret
ED25519_PRIVATE_KEY_B64=generated_key
ADMIN_EMAILS=admin@your-domain.comNote: At least one authentication method (OAuth or MagicLink) must also be configured.
OAUTH_ALLOWED_DOMAIN- Restrict sign-ins to specific email domainOAUTH_AUTO_LOGIN- Automatically log in if OAuth session existsMAIL_*- SMTP configuration for email featuresAUTH_MAGICLINK_ENABLED- Force enable/disable MagicLinkONLY_ADMIN_CAN_CREATE- Restrict document creation to admins only (default: false)ACKIFY_TELEMETRY- Enable anonymous usage metrics (default: false)ACKIFY_STORAGE_TYPE- Document storage type:localors3(default: disabled)ACKIFY_STORAGE_MAX_SIZE_MB- Maximum upload file size in MB (default: 50)ACKIFY_STORAGE_S3_*- S3-compatible storage configuration
Error: "At least ONE authentication method must be enabled!"
Solution: Configure either:
- OAuth (set
OAUTH_CLIENT_IDandOAUTH_CLIENT_SECRET) - MagicLink (set
MAIL_HOSTand SMTP credentials)
-
Verify redirect URI in OAuth provider settings:
https://your-domain.com/auth/callback -
Check OAuth credentials are correct in
.env -
Verify
APP_BASE_URLmatches your domain
- Verify SMTP credentials are correct
- Check SMTP host and port settings
- Review logs:
docker compose logs -f ackify-ce - Test SMTP connection with your provider's tools
Make sure Docker has necessary permissions:
sudo usermod -aG docker $USER
newgrp dockerTo update to the latest version:
cd ackify-ce
docker compose pull
docker compose up -d- Documentation: https://github.com/kolapsis/ackify
- Issues: https://github.com/kolapsis/ackify/issues