# Collecte - self-hosted open source email collector Collect emails on your static website into your private git repo. The solution is targeted at people who already have a Linux server and domain, or don't mind to get one. You have to be familiar with basics of operating a web server. No Python knowledge is required, but service is going to use it. ## Prerequisites * You'll need to host a Linux server somewhere. * You'll need a domain to serve the API requests. * It can be a tiny virtual machine, like Google's free tier f1-micro. * It can be a Heroku node, which will save a few minutes configuring nginx. * You'll need to be familiar with shell to install and configure service. * The page with the email signup form can be hosted anywhere, for example on GitHub pages. ## What you get Python service running on a virtual machine using systemd unit. Nginx serving a single API endpoint. Private git repository, that stores all submitted emails into a plain text file. ## How it works * Service accepts POST requests at `/singup`. * Appends the received email to `emails.txt`. * Commits changes. * Pushes the commit to the upstream. * Redirects user to "thanks" page. ## How to install Instruction are written for Ubuntu Linux, but can be applied to any other Linux distribution. 1. Create a system user to run the service. `sudo adduser --system collecte --home /var/lib/collecte` 2. Setup git repo for saving emails. `cd /var/lib/collecte && sudo -u collecte git init .` 3. Create an SSH key pair to push the repo. `sudo -u collecte ssh-keygen` 4. Make sure the public key is accepted at the upstream git repo. 5. Install collecte inside of a virtualenv. ``` sudo su collecte python3 -m venv /var/lib/collecte/.venv source /var/lib/collecte/.venv/bin/activate pip install collecte exit ``` 6. Create systemd unit. ``` sudo cat >/etc/systemd/system/collecte.service <