The Bunker Ops Server Build-Out
Introduction
The following guide is for installing The Bunker Ops (bnkops) Server Build-out. This project is a effort to provide a free open-source software stack alternative to Nationbuilder or similar services.
Inspired by this paper: If you do politics who is reading your secrets - why you should de-corp your software stack.
The tldr is that corporate software services are designed to trap advocacy organizations on their systems. Once trapped, they extract data and dollars from local communities and funnel it to corporate hierarchies; often to systems that local advocacy organizations are actively working against. A simple question to highlight this phenomenon; who owns the software you use? Who are you giving your money and data to? Who is profiting off your labor?
This software stack, deployed on low-cost hardware, provides the following:
- Fully functional desktop computer with pre-installed open source software stack for a functioning office setup
- Hosted website under consumer domain
- Low-code app builder with hosting under same domain
- Visual automation systems
- Nearly unlimited standard database storage for your contacts and information
- Services for writing newsletters and running online campaigns
Further, these systems are the same ones that bnkops uses, with custom apps already produced, such as:
- bnkops Simple Targeter - Simple Targeter is a open source web-app that facilitates a email campaign pointed at a single inbox.
In active testing by bnkops, which manuals will be produced for free, are apps for:
- Local LLM's and data computing (Ai) Completed - Daisy
- Cloud storage & docs
- Collaborative image and video editing
Not only do we replace your expensive subscription software, we provide a system that is fully customize-able, accessible, locally secured, and yours to keep. Never do you have to worry about a external system going down and taking your work with it; keep it all for yourself, all the time.
We don't promise this to be a easy transition. There is learning involved in this process. We have found that a computer savvy human can install this stack in a day and can become comfortable with the system in a few weeks. Taking the time to learn how to deploy your own apps will have long term benefits, such as thousands of saved dollars, and a learning that will open up a whole new world of opportunity.
Development Path
bnkops goal is to provide pre-configured plug and play machines that come with this full stack of software pre-configured to get a organization online with a full nationbuilder alt
In that process, we hope to develop a single command install (likely using docker) that installs this software on any hardware, for free.
Concept- If you do politics who is reading your secrets - why you should de-corp your software stack- Development
- Campaign App - bnkops Simple Targeter
- Server Stack - This document.
- Currently working through databasing & newsletter systems
- Next up will be integrating socials and sharing systems
- Deployment - Work up a docker-compose file to up the whole system.
- Beta
- Open now - looking for partners to use the systems as they are developed.
- Alpha
- Aiming for Q1 2025
- Product
- Aiming for Q3 2025
Does seem intimating or you just want a simpler solution?
Want to deploy on your own hardware? We provide technical support for deployment: send us a email
Don't have any budget for support? All good, keep reading, this thorough guide will help you deploy your system on any hardware you can get your hands on.
That all sound like a lot of work and you want support along the way? Daisy can answer your technical questions and we provide free access according to need: Daisy
Worried about your system going obsolete? We also use the exact same system, and as long as we are doing advocacy work, we will be publishing updated manuals. Plus, if you ever need support, you get to support a local organization fighting for change in your community.
Don't want to manage your server at all? bnkops can host your machine for you, and if you ever want to leave our services, you can have your unit delivered directly to you: send us a email
Cost Savings
Total savings, for the average starter advocacy organization, we calculate to be ~$400/month. For larger organizations with databases over 10,000 entries; this easily could be thousands of dollars in monthly savings. Over a year, savings in the tens of thousands. In a organizations lifetime, we suspect savings could enter the hundreds of thousands.
Service | Replaces | Costs/Month for bnkops server | Savings/Month |
---|---|---|---|
Website & Host | Squarespace, Wordpress, Nationbuilder, etc. | $0/month | ~$30/month |
Automation | Zapier, App Script, etc. | $0/month | ~$250/month |
Database | Google Sheets, Nationbuilder, etc. | $0/month | ~$30/month |
Operating System | Windows, Mac, etc. | $0/month | ~$20/month |
Email Targeter | Newmode, Nationbuilder, etc. | $0/month | ~$50/month |
Knowledge Management | Notion, Notes, etc. | $0/monthj | ~$20/month |
savings calculated based on bnkops own savings.
Prerequisites
Hardware
bnkops uses a refurbished HP ProDesk as hardware. System can be run on any similar hardware and we have had success deploying on used hardware for under $50.
Recommend minimum hardware specifications:
RAM | Storage | Processor | Hardwire Internet Connection |
---|---|---|---|
16GB | 256GB | 3GHZ | 1GB |
Power and internet connections are required. System can be deployed over WIFI however wired connection is strongly recommend as this guide does not account for networking over WIFI.
Theoretically, this system can be deployed on much less capable hardware, however we will be developing for these minimum specs.
Operating System - Ubuntu 24
This system uses Ubuntu 24, which is a free and open-source operating system. The interface is similar to a mac computer and is quite user friendly.
As a bonus, Ubunutu OS comes bundled with several open source tools, including a full office suite. If adopted, this can lead to even more savings:
Service | Replaces | Costs/Month for bnkops server | Savings/Month |
---|---|---|---|
Office Management | Docs, Sheets, etc. | $0/month | ~$35/month |
Cloud Storage | Dropbox, Google Cloud, etc. | $0/month | ~$30/month |
Image & PDF Editors | Adobe, PDF Expert, etc. | $0/month | ~40/month |
Further, Ubuntu comes preinstalled with a app store, where you can find apps that replace nearly any standard app you would find on other operating systems.
Cloudflare
Cloudflare is a suite of security, performance, and content delivery network (CDN) services that helps protect and accelerate websites, applications, and APIs from various types of online threats, including DDoS attacks, malware, and more, while also improving page load times and user experience.
We are going to make use of Cloudflare's free hosting services, specifically their dns services and tunneling, to securely get your systems online.
You must open a account and host a domain with them for this guide. We will be exploring localized alternatives in the future however this has worked for us so far.
You can register a domain with them directly or transfer one. Full installation manual below.
This system requires you to have a smtp capable email client. bnkops uses Mailgun, which provides 100 emails for free a day, and has a user friendly dashboard.
Almost any mailbox provider will also provide smtp compatibility. For example, Gmail ships with these features on all mailboxes (however you may find your emails throttled).
Installation
Ubuntu
Install the latest Ubuntu release on hardware.
Throughout this installation, there may be dependencies that are required. Your system prompt will often tell you what is required for installation. Any average LLM, such as Daisy, will also be able to help you debug as you go.
Getting Started
Have you never used the command line? No? This section is for you! Ubuntu, and other Linux systems, do often require you to use the command line. The command line is an interface where you interact with your computer using text-based commands and inputs, allowing you to automate tasks, manage files, run programs, and access system settings.
To open the command line on Ubuntu press the Ctrl.Alt.T keys.
And voila! You'll open a command window.
The command window is what we will use to install most of the apps below.
The default configuration of your command line also has some particular keyboard shortcuts. For example, copy and paste work slightly differently:
- Copy = Ctrl.Shift.C
- Paste = Ctrl.Shift.V
You can read a in depth terminal guide here
Here is where you'll enter your commands. This build out utilizes the command line to install your software. Once you get used to it, it is by far the the best way to install applications.
Along the installation journey, your system will likely require dependencies to be installed. These are just the building blocks for the wider software set. The command line feedback should give you enough information to move forward. In cases where you are stumped, Ai services like Daisy can help you debug. If you want help from a human, you can send us a email anytime.
Nice to Haves
glances
Glances is a terminal app that gives a overview of system resourcing. Helps with debugging. Think of it as your activity monitor.
To instal glances:
To launch Glances
terminator
Terminator is a alternative terminal app (command line input) to the stock terminal app that comes with gnome. Lots of nifty features, including tiling windows.
To launch terminator now just press Ctrl.Alt.T
Core Components
curl
Curl (Command Line Utility and Resource) is a powerful tool that lets you transfer data to and from servers over various protocols, such as HTTP, HTTPS, FTP, and more, using simple text-based commands.
cloudflared tunnel
A Cloudflare Tunnel is a reverse proxy service that allows you to securely expose services running on your local machine or behind a firewall to the public internet, while keeping them hidden from view and protecting them with Cloudflare's security features. It is a tunnel that puts your website online.
You will need a Cloudflare account to get started, including your account identifier and password.
To install run:
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
dpkg -i cloudflared-linux-amd64.deb
Follow all on screen instructions.
obsidian
Obsidian is the knowledge app of choice and is the system in which we will write content. It will be the platform that publishes your website and manages your cloud files.
We cannot praise obsidian enough. Learning this software can introduce you to a whole new way of thinking about data and infromation; empowering you to make connections in your thinking that other software simply doesn't do.
A overview video on obsidian we like: video
Install through the snap store.
syncthing
Syncthing is an open-source, peer-to-peer (P2P) syncing solution that lets you securely synchronize files across multiple devices, regardless of whether they're running the same operating system or not, using a decentralized and encrypted method. It is the system that will allow you to edit your site remotely through obsidian.
Further instructions on remote editing found here: {inster link}
Follow instructions for installation here.
If that gives you trouble, try installing through the snap store.
After installation the app will be available here: localhost:8384
mkdocs
mkdocs, specifically mkdocs-publisher, is the system that will build and serve your website. Combined with cloudflared tunnel, it will get your website online.
Full tutorial here: How to Replicate this Repo
A expanded mkdocs-publisher deployment available here: Updated Website Install Guide
Documentation on how to adjust website here.
docker
Docker is a containerization platform that allows you to package your applications and their dependencies into isolated, self-contained units called containers, which can be easily run on any machine with Docker installed, without worrying about conflicting libraries or environments.
Set up Docker's apt repository.
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Install Latest Version
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Confirm:
Docker Compose
Docker Compose is a tool that allows you to define and run multi-container Docker applications in a single command, making it easier to manage complex services and their dependencies. With Docker Compose, you can create a YAML file (called a "docker-compose.yml" file) that specifies the containers you want to run, along with their ports, volumes, and other configurations.
With time, we hope to get the entire system down to a single docker-compose install command. For now we are doing everything one at a time.
Install Docker Compose
Docker Network
Create a network:
n8n & budibase
Intro
These are two different software however this section combines them. We do so because these two software work in tandem to deliver bnkops like Simple Targeter.
n8n (pronounced "eighten") is a free, open-source workflow automation tool that helps you connect and synchronize data across various services and APIs, using a visual interface to create custom workflows, making it easier to automate repetitive tasks and integrate different systems.
n8n documentation here: n8n
Budibase is a low-code platform for building custom business applications, allowing users to design, build, and deploy web-based apps without extensive coding knowledge, using a drag-and-drop interface to connect data sources, add workflows, and create user interfaces.
Budibase documentation here: Budibase
Install
First we create a docker network to nestle our two software inside.
Run n8n in that network:
docker run -it --rm --name n8n --network my_network -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
Run Budibase in the same network:
docker run -d -t \
--name=budibase \
--network my_network \
-p 10000:80 \
-v /local/path/data:/data \
--restart unless-stopped \
budibase/budibase:latest
Local Access
Both of these apps will be locally accessible upon installation: - Budibase: localhost:10000 - n8n: localhost:5678
Public Access
We are going to use cloudflare to get both of these services online (in the same process you got your website online).
Manual for creating tunnels here: Cloudflare Guide
Configure
Both n8n and Budibase require some configuration after start up. For both apps, you will need to input email credentials (smtp).
{insert more info}
bnkops Budibase & n8n apps
Simple Targeter
bnkops Simple Targeter is a app that facilitates a email campaign pointed at a single inbox. Simple Targeter itself replaces Newmode and several Simple Targeter instances combined with you mkdocs site provides a full replacement for Nationbuilder.
Simple Targeter Budibase code is available here:
Simple Targeter n8n code is available here:
{instert more info}
Listmonk
Listmonk is an open-source newsletter management platform written in Rust. It's designed to help publishers manage their email newsletters, including features like subscriber management, email sending, and analytics.
Listmonk Installation
Prerequisites
- Docker and Docker Compose are installed
- You have an existing Docker network named
my_network
Step 1: Create a Directory for Listmonk
Step 2: Create docker-compose.yml
Create a file named docker-compose.yml
and add the following content:
version: '3'
services:
listmonk:
image: listmonk/listmonk:latest
container_name: listmonk
restart: unless-stopped
environment:
- TZ=UTC
volumes:
- ./config.toml:/listmonk/config.toml
depends_on:
- db
networks:
- my_network
db:
image: postgres:12
container_name: listmonk_db
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=your_strong_database_password
- POSTGRES_USER=listmonk
- POSTGRES_DB=listmonk
volumes:
- ./listmonk-data:/var/lib/postgresql/data
networks:
- my_network
networks:
my_network:
external: true
Replace your_strong_database_password
with a secure password.
Step 3: Create config.toml
Create a file named config.toml
and add the following content:
[app]
address = "0.0.0.0:9000"
admin_username = "listmonk"
admin_password = "your_secure_admin_password"
[db]
host = "listmonk_db"
port = 5432
user = "listmonk"
password = "your_strong_database_password"
database = "listmonk"
ssl_mode = "disable"
[privacy]
individual_tracking = false
Replace your_secure_admin_password
with a strong password for the admin account, and ensure your_strong_database_password
matches the one in docker-compose.yml
.
Step 4: Initialize the Database
Run the following command to initialize the database:
Step 5: Start Listmonk
Start the Listmonk services:
Step 6: Access Listmonk
Listmonk should now be accessible at http://localhost:9000
. Use the admin_username
and admin_password
from your config.toml
to log in.
Troubleshooting
If you encounter any issues, you can check the logs:
Updating Listmonk
To update Listmonk in the future, run:
Remember to back up your data before updating.
Configure
Listmonk also requires some internal configuration.
How to update your public form: Customizing Your Listmonk Subscription Form
smtp public address
{insert more info}
Security Notes
- Change the default admin username and password in
config.toml
. - Ensure your firewall is configured to protect the Listmonk port (9000) if exposed.
- Regularly update Listmonk and its dependencies.