While our hosted version of Attendee offers a quick and easy way to get started, self-hosting unlocks the ultimate level of control, security, and cost-efficiency. By running Attendee within your own cloud environment, you ensure that sensitive meeting data never leaves your infrastructure, and you can reduce operational costs by up to 10x compared to closed-source vendors.
This guide provides a complete, step-by-step walkthrough for deploying Attendee using Docker. We've designed it to be as simple as possible, requiring only Postgres and Redis as external services.
Why Self-Host Attendee?
Full Control Over Your Data
For companies with strict data privacy and compliance requirements (like GDPR or HIPAA), self-hosting is non-negotiable. When you self-host Attendee, all meeting recordings, transcripts, and metadata are stored in your own S3 buckets and Postgres database. Your data remains yours, always.
Drastic Cost Reduction
Managed services are convenient, but that convenience comes at a premium. By self-hosting, you bypass service fees and pay only for the raw compute and storage resources you consume on your cloud provider (like AWS, GCP, or Azure). This direct-cost model is how self-hosting can be up to 10x cheaper.
Customization and Scalability
Running your own instance gives you the freedom to configure and scale the system to your exact needs. You can integrate it with your existing infrastructure monitoring tools, tweak performance settings, and scale your bot fleet up or down based on demand.
Step-by-Step Deployment Guide
This guide will walk you through setting up Attendee in development mode on your local machine. The process is a great way to get familiar with the components before deploying to a production server.
Step 1: Clone the Repository
First, get the source code from our GitHub repository.
git clone https://github.com/attendee-labs/attendee.git
cd attendee
Step 2: Build the Docker Image
This command packages the Attendee Django application and all its dependencies into a single Docker image. It can take about 5 minutes on the first run.
docker compose -f dev.docker-compose.yaml build
Step 3: Create and Configure the Environment File
Attendee uses a .env
file to manage secrets and configuration. We provide a script to generate a template for you. Run the following command to create the file:
docker compose -f dev.docker-compose.yaml run --rm attendee-app-local python init_env.py > .env
Now, open the newly created .env
file in your favorite editor. You'll need to fill in your AWS credentials for S3 storage. The app will not work without them.
# ... other settings ...
# AWS Credentials for S3 file storage
# The app will emit errors without these
AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY"
AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_KEY"
AWS_STORAGE_BUCKET_NAME="your-unique-s3-bucket-name"
AWS_S3_REGION_NAME="us-east-1" # Or your preferred region
# ... other settings ...
Step 4: Start All Services
With the configuration in place, you can now start the Attendee app along with its Postgres and Redis dependencies.
docker compose -f dev.docker-compose.yaml up
Step 5: Run Database Migrations
While the services are running, open a new terminal tab and run the database migrations. This command sets up the necessary tables in your Postgres database.
docker compose -f dev.docker-compose.yaml exec attendee-app-local python manage.py migrate
Step 6: Create Your Account & Get an API Key
Your self-hosted instance is now running! Navigate to http://localhost:8000
in your browser to create your first account.
- Fill out the sign-up form.
- Check the terminal window where you ran
docker compose ... up
. The account confirmation link will be printed in the server logs. It will look something likehttp://localhost:8000/accounts/confirm-email/
./ - Copy and paste this link into your browser to confirm your account.
- Log in, navigate to the 'API Keys' section in the sidebar, and create your first API key.
That's it! You now have a fully functional Attendee instance. You can start making API calls to http://localhost:8000
instead of the hosted https://app.attendee.dev
.
You're Self-Hosted! What's Next?
You've taken the first step toward a more controlled and cost-effective meeting bot integration. If you have questions, run into issues, or want to suggest a feature, the best place to connect with us is our community.
Join our Slack Community