444 lines
11 KiB
Markdown
444 lines
11 KiB
Markdown
# Getting Started with Digital Liberation
|
|
|
|
Welcome to Changemaker-Lite! You're about to reclaim your digital sovereignty and stop feeding your secrets to corporations. This guide will help you set up your own political infrastructure that you actually own and control.
|
|
|
|
## Quick Start
|
|
|
|
### Build Changemkaer-Lite
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://gitea.bnkops.com/admin/changemaker.lite
|
|
cd changemaker.lite
|
|
```
|
|
|
|
!!! warning "Cloudflare Credentials"
|
|
The config.sh script will ask you for your Cloudflare credentials to get started. You can find more information on how to find this in the [Cloudlflare Configuration](./config/cloudflare-config.md)
|
|
|
|
|
|
```
|
|
# Configure environment (creates .env file)
|
|
./config.sh
|
|
```
|
|
|
|
```
|
|
# Start all services
|
|
docker compose up -d
|
|
```
|
|
|
|
### Deploy
|
|
|
|
!!! note "Cloudflare"
|
|
Right now, we suggest deploying using Cloudflare for simplicity and protections against 99% of surface level attacks to digital infrastructure. If you want to avoid using this service, we recommend checking out [Pagolin](https://github.com/fosrl/pangolin) as a drop in replacement.
|
|
|
|
For secure public access, use the production deployment script:
|
|
|
|
```bash
|
|
./start-production.sh
|
|
```
|
|
|
|
|
|
## Why Changemaker Lite?
|
|
|
|
Before we dive into the technical setup, let's be clear about what you're doing here:
|
|
|
|
!!! quote "The Reality"
|
|
**If you do politics, who is reading your secrets?** Every corporate platform you use is extracting your power, selling your data, and building profiles on your community. It's time to break free.
|
|
|
|
### What You're Getting
|
|
|
|
- **Data Sovereignty**: Your data stays on your servers
|
|
- **Cost Savings**: $50/month instead of $2,000+/month for corporate solutions
|
|
- **Community Control**: Technology that serves movements, not shareholders
|
|
- **Trans Liberation**: Tools built with radical politics and care
|
|
|
|
### What You're Leaving Behind
|
|
|
|
- ❌ Corporate surveillance and data extraction
|
|
- ❌ Escalating subscription fees and vendor lock-in
|
|
- ❌ Algorithmic manipulation of your community
|
|
- ❌ Terms of service that can silence you anytime
|
|
|
|
---
|
|
|
|
## System Requirements
|
|
|
|
### Operating System
|
|
|
|
- **Ubuntu 24.04 LTS (Noble Numbat)** - Recommended and tested
|
|
|
|
!!! note "Getting Started on Ubunut"
|
|
Want some help getting started with a baseline buildout for a Ubunut server? You can use our [BNKops Server Build Script](./build-server.md)
|
|
|
|
- Other Linux distributions with systemd support
|
|
- WSL2 on Windows (limited functionality)
|
|
- Mac OS
|
|
|
|
!!! tip "New to Linux?"
|
|
Consider [Linux Mint](https://www.linuxmint.com/) - it looks like Windows but opens the door to true digital freedom.
|
|
|
|
### Hardware Requirements
|
|
|
|
- **CPU**: 2+ cores (4+ recommended)
|
|
- **RAM**: 4GB minimum (8GB recommended)
|
|
- **Storage**: 20GB+ available disk space
|
|
- **Network**: Stable internet connection
|
|
|
|
!!! info "Cloud Hosting"
|
|
You can run this on a VPS from providers like Hetzner, DigitalOcean, or Linode for ~$20/month.
|
|
|
|
### Software Prerequisites
|
|
|
|
!!! tip "Getting Started on Docker"
|
|
Want some help getting started with a baseline buildout for a Ubunutu server? You can use our [BNKops Server Build Script](./build-server.md) to roll out a configured server in about 20 mins!
|
|
|
|
1. **Docker Engine** (24.0+)
|
|
|
|
```bash
|
|
# Install Docker
|
|
curl -fsSL https://get.docker.com | sudo sh
|
|
|
|
# Add your user to docker group
|
|
sudo usermod -aG docker $USER
|
|
|
|
# Log out and back in for group changes to take effect
|
|
```
|
|
|
|
2. **Docker Compose** (v2.20+)
|
|
|
|
```bash
|
|
# Verify Docker Compose v2 is installed
|
|
docker compose version
|
|
```
|
|
|
|
3. **Essential Tools**
|
|
|
|
```bash
|
|
# Install required packages
|
|
sudo apt update
|
|
sudo apt install -y git curl jq openssl
|
|
```
|
|
|
|
## Installation
|
|
|
|
### 1. Clone Repository
|
|
|
|
```bash
|
|
git clone https://gitea.bnkops.com/admin/changemaker.lite
|
|
cd changemaker.lite
|
|
```
|
|
|
|
### 2. Run Configuration Wizard
|
|
|
|
The `config.sh` script will guide you through the initial setup:
|
|
|
|
```bash
|
|
./config.sh
|
|
```
|
|
|
|
This wizard will:
|
|
|
|
- ✅ Create a `.env` file with secure defaults
|
|
- ✅ Scan for available ports to avoid conflicts
|
|
- ✅ Set up your domain configuration
|
|
- ✅ Generate secure passwords for databases
|
|
- ✅ Configure Cloudflare credentials (optional)
|
|
- ✅ Update all configuration files with your settings
|
|
|
|
#### Configuration Options
|
|
|
|
During setup, you'll be prompted for:
|
|
|
|
1. **Domain Name**: Your primary domain (e.g., `example.com`)
|
|
2. **Cloudflare Settings** (optional):
|
|
- API Token
|
|
- Zone ID
|
|
- Account ID
|
|
3. **Admin Credentials**:
|
|
- Listmonk admin email and password
|
|
- n8n admin email and password
|
|
|
|
### 3. Start Services
|
|
|
|
Launch all services with Docker Compose:
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
Wait for services to initialize (first run may take 5-10 minutes):
|
|
|
|
```bash
|
|
# Watch container status
|
|
docker compose ps
|
|
|
|
# View logs
|
|
docker compose logs -f
|
|
```
|
|
|
|
### 4. Verify Installation
|
|
|
|
Check that all services are running:
|
|
|
|
```bash
|
|
docker compose ps
|
|
```
|
|
|
|
Expected output should show all services as "Up":
|
|
|
|
- code-server-changemaker
|
|
- listmonk_app
|
|
- listmonk_db
|
|
- mkdocs-changemaker
|
|
- mkdocs-site-server-changemaker
|
|
- n8n-changemaker
|
|
- nocodb
|
|
- root_db
|
|
- homepage-changemaker
|
|
- gitea_changemaker
|
|
- gitea_mysql_changemaker
|
|
- mini-qr
|
|
|
|
## Local Access
|
|
|
|
Once services are running, access them locally:
|
|
|
|
### 🏠 Homepage Dashboard
|
|
- **URL**: [http://localhost:3010](http://localhost:3010)
|
|
- **Purpose**: Central hub for all services
|
|
- **Features**: Service status, quick links, monitoring
|
|
|
|
### 💻 Development Tools
|
|
- **Code Server**: [http://localhost:8888](http://localhost:8888) — VS Code in browser
|
|
- **Gitea**: [http://localhost:3030](http://localhost:3030) — Git repository management
|
|
- **MkDocs Dev**: [http://localhost:4000](http://localhost:4000) — Live documentation preview
|
|
- **MkDocs Prod**: [http://localhost:4001](http://localhost:4001) — Built documentation
|
|
|
|
### 📧 Communication
|
|
- **Listmonk**: [http://localhost:9000](http://localhost:9000) — Email campaigns
|
|
_Login with credentials set during configuration_
|
|
|
|
### 🔄 Automation & Data
|
|
- **n8n**: [http://localhost:5678](http://localhost:5678) — Workflow automation
|
|
_Login with credentials set during configuration_
|
|
- **NocoDB**: [http://localhost:8090](http://localhost:8090) — No-code database
|
|
|
|
### 🛠️ Interactive Tools
|
|
- **Map Viewer**: [http://localhost:3000](http://localhost:3000) — Geographic data visualization
|
|
- **Mini QR**: [http://localhost:8089](http://localhost:8089) — QR code generator
|
|
|
|
## Production Deployment
|
|
|
|
### Deploy with Cloudflare Tunnels
|
|
|
|
For secure public access, use the production deployment script:
|
|
|
|
```bash
|
|
./start-production.sh
|
|
```
|
|
|
|
This script will:
|
|
|
|
1. Install and configure `cloudflared`
|
|
2. Create a Cloudflare tunnel
|
|
3. Set up DNS records automatically
|
|
4. Configure access policies
|
|
5. Create a systemd service for persistence
|
|
|
|
### What Happens During Production Setup
|
|
|
|
1. **Cloudflare Authentication**: Browser-based login to Cloudflare
|
|
2. **Tunnel Creation**: Secure tunnel named `changemaker-lite`
|
|
3. **DNS Configuration**: Automatic CNAME records for all services
|
|
4. **Access Policies**: Email-based authentication for sensitive services
|
|
5. **Service Installation**: Systemd service for automatic startup
|
|
|
|
### Production URLs
|
|
|
|
After successful deployment, services will be available at:
|
|
|
|
**Public Services**:
|
|
|
|
- `https://yourdomain.com` - Main documentation site
|
|
- `https://listmonk.yourdomain.com` - Email campaigns
|
|
- `https://docs.yourdomain.com` - Documentation preview
|
|
- `https://n8n.yourdomain.com` - Automation platform
|
|
- `https://db.yourdomain.com` - NocoDB
|
|
- `https://git.yourdomain.com` - Gitea
|
|
- `https://map.yourdomain.com` - Map viewer
|
|
- `https://qr.yourdomain.com` - QR generator
|
|
|
|
**Protected Services** (require authentication):
|
|
|
|
- `https://homepage.yourdomain.com` - Dashboard
|
|
- `https://code.yourdomain.com` - Code Server
|
|
|
|
## Configuration Management
|
|
|
|
### Environment Variables
|
|
|
|
Key settings in `.env` file:
|
|
|
|
```env
|
|
# Domain Configuration
|
|
DOMAIN=yourdomain.com
|
|
BASE_DOMAIN=https://yourdomain.com
|
|
|
|
# Service Ports (automatically assigned to avoid conflicts)
|
|
HOMEPAGE_PORT=3010
|
|
CODE_SERVER_PORT=8888
|
|
LISTMONK_PORT=9000
|
|
MKDOCS_PORT=4000
|
|
MKDOCS_SITE_SERVER_PORT=4001
|
|
N8N_PORT=5678
|
|
NOCODB_PORT=8090
|
|
GITEA_WEB_PORT=3030
|
|
GITEA_SSH_PORT=2222
|
|
MAP_PORT=3000
|
|
MINI_QR_PORT=8089
|
|
|
|
# Cloudflare (for production)
|
|
CF_API_TOKEN=your_token
|
|
CF_ZONE_ID=your_zone_id
|
|
CF_ACCOUNT_ID=your_account_id
|
|
```
|
|
|
|
### Reconfigure Services
|
|
|
|
To update configuration:
|
|
|
|
```bash
|
|
# Re-run configuration wizard
|
|
./config.sh
|
|
|
|
# Restart services
|
|
docker compose down && docker compose up -d
|
|
```
|
|
|
|
## Common Tasks
|
|
|
|
### Service Management
|
|
|
|
```bash
|
|
# View all services
|
|
docker compose ps
|
|
|
|
# View logs for specific service
|
|
docker compose logs -f [service-name]
|
|
|
|
# Restart a service
|
|
docker compose restart [service-name]
|
|
|
|
# Stop all services
|
|
docker compose down
|
|
|
|
# Stop and remove all data (CAUTION!)
|
|
docker compose down -v
|
|
```
|
|
|
|
### Backup Data
|
|
|
|
```bash
|
|
# Backup all volumes
|
|
docker run --rm -v changemaker_listmonk-data:/data -v $(pwd):/backup alpine tar czf /backup/listmonk-backup.tar.gz -C /data .
|
|
|
|
# Backup configuration
|
|
tar czf configs-backup.tar.gz configs/
|
|
|
|
# Backup documentation
|
|
tar czf docs-backup.tar.gz mkdocs/docs/
|
|
```
|
|
|
|
### Update Services
|
|
|
|
```bash
|
|
# Pull latest images
|
|
docker compose pull
|
|
|
|
# Recreate containers with new images
|
|
docker compose up -d
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Port Conflicts
|
|
|
|
If services fail to start due to port conflicts:
|
|
|
|
1. Check which ports are in use:
|
|
|
|
```bash
|
|
sudo ss -tulpn | grep LISTEN
|
|
```
|
|
|
|
2. Re-run configuration to get new ports:
|
|
|
|
```bash
|
|
./config.sh
|
|
```
|
|
|
|
3. Or manually edit `.env` file and change conflicting ports
|
|
|
|
### Permission Issues
|
|
|
|
Fix permission problems:
|
|
|
|
```bash
|
|
# Get your user and group IDs
|
|
id -u # User ID
|
|
id -g # Group ID
|
|
|
|
# Update .env file with correct IDs
|
|
USER_ID=1000
|
|
GROUP_ID=1000
|
|
|
|
# Restart services
|
|
docker compose down && docker compose up -d
|
|
```
|
|
|
|
### Service Won't Start
|
|
|
|
Debug service issues:
|
|
|
|
```bash
|
|
# Check detailed logs
|
|
docker compose logs [service-name] --tail 50
|
|
|
|
# Check container status
|
|
docker ps -a
|
|
|
|
# Inspect container
|
|
docker inspect [container-name]
|
|
```
|
|
|
|
### Cloudflare Tunnel Issues
|
|
|
|
```bash
|
|
# Check tunnel service status
|
|
sudo systemctl status cloudflared-changemaker
|
|
|
|
# View tunnel logs
|
|
sudo journalctl -u cloudflared-changemaker -f
|
|
|
|
# Restart tunnel
|
|
sudo systemctl restart cloudflared-changemaker
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
Now that your Changemaker Lite instance is running:
|
|
|
|
1. **Set up Listmonk** - Configure SMTP and create your first campaign
|
|
2. **Create workflows** - Build automations in n8n
|
|
3. **Import data** - Set up your NocoDB databases
|
|
4. **Configure map** - Add location data for the map viewer
|
|
5. **Write documentation** - Start creating content in MkDocs
|
|
6. **Set up Git** - Initialize repositories in Gitea
|
|
|
|
## Getting Help
|
|
|
|
- Check the [Services](services/index.md) documentation for detailed guides
|
|
- Review container logs for specific error messages
|
|
- Ensure all prerequisites are properly installed
|
|
- Verify your domain DNS settings for production deployment
|