← Back to journiv-app

How to Deploy & Use journiv-app

Journiv Deployment & Usage Guide

1. Prerequisites

Before deploying Journiv, ensure your system meets these requirements:

  • Docker (recommended) or Node.js runtime environment
  • Docker Compose (for full-featured deployment)
  • A server or machine with at least 512MB RAM (1GB+ recommended)
  • Domain name or static IP address (optional but recommended)
  • Basic terminal/command-line knowledge

2. Installation

Quick Start with Docker (Minimal Version)

For a quick test with basic functionality:

docker run -d \
  --name journiv \
  -p 8000:8000 \
  -e SECRET_KEY=your-secret-key-here \
  -e DOMAIN_NAME=192.168.1.1 \
  -v journiv_data:/data \
  --restart unless-stopped \
  swalabtech/journiv-app:latest

Note: This minimal version lacks import/export and other advanced features.

Complete Installation with Docker Compose

For full functionality, use the official Docker Compose file:

  1. Download the compose file:
curl -O https://raw.githubusercontent.com/journiv/journiv-app/latest/docker-compose.yml
  1. Edit the environment variables in docker-compose.yml (see Configuration section below)

  2. Start the application:

docker-compose up -d

Manual Installation (Development)

  1. Clone the repository:
git clone https://github.com/journiv/journiv-app.git
cd journiv-app
  1. The project appears to be a Flutter web application (based on source files). For development:
    • Install Flutter SDK
    • Run flutter pub get to install dependencies
    • Use flutter run -d chrome for web development

3. Configuration

Essential Environment Variables

Configure these in your docker-compose.yml or as Docker run parameters:

VariableDescriptionExample
SECRET_KEYRequired - Secret key for session encryptionyour-secret-key-here
DOMAIN_NAMERequired - Your server's domain or IP192.168.1.1 or journiv.example.com
PORTPort to run the application (default: 8000)8000
DATA_PATHPath for storing journal data (default: /data)/path/to/your/data

Docker Compose Configuration Example

version: '3.8'

services:
  journiv:
    image: swalabtech/journiv-app:latest
    container_name: journiv
    restart: unless-stopped
    ports:
      - "8000:8000"
    environment:
      - SECRET_KEY=your-strong-secret-key-change-this
      - DOMAIN_NAME=your-domain.com
    volumes:
      - journiv_data:/data
      # Add additional volumes for backups if needed

volumes:
  journiv_data:

Security Considerations

  • Always use a strong, unique SECRET_KEY
  • Consider using HTTPS with a reverse proxy (nginx, Traefik, Caddy)
  • Regular backups of the /data volume are highly recommended (beta software warning)

4. Build & Run

Production Build (Docker)

The Docker image is production-ready. No additional build steps required.

Development Build

If you want to build from source:

  1. Ensure Flutter SDK is installed and configured for web:
flutter config --enable-web
  1. Build the web application:
flutter build web --release
  1. The built files will be in build/web/ directory

Running in Development Mode

# For web development
flutter run -d chrome

# Or with specific port
flutter run -d chrome --web-port 8000

5. Deployment

Recommended Deployment Platforms

  1. Self-Hosted Server (Recommended)

    • Use Docker Compose on your own VPS (DigitalOcean, Linode, AWS EC2)
    • Add a reverse proxy (nginx) for HTTPS
    • Set up automated backups for the data volume
  2. PikaPods (One-click deployment)

  3. Docker-Capable Hosting

    • Any platform supporting Docker containers
    • Examples: Railway, Render, Fly.io

Production Deployment Checklist

  • Set strong SECRET_KEY environment variable
  • Configure proper domain name in DOMAIN_NAME
  • Set up HTTPS (via reverse proxy or cloudflare)
  • Configure regular backups of /data volume
  • Set up monitoring/health checks
  • Configure firewall to allow only necessary ports (8000 or 443)

Reverse Proxy Configuration (nginx)

server {
    listen 80;
    server_name journiv.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name journiv.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

6. Troubleshooting

Common Issues & Solutions

Issue: Application won't start

Solution: Check Docker logs with `docker logs journiv`
- Ensure SECRET_KEY is set
- Verify port 8000 is not in use
- Check disk space for volume mounting

Issue: Can't access the web interface

Solution:
1. Verify the container is running: `docker ps | grep journiv`
2. Check firewall rules allow port 8000
3. Ensure DOMAIN_NAME matches your access URL
4. Try accessing via IP:port directly

Issue: Data persistence problems

Solution:
1. Verify volume mounts: `docker volume ls`
2. Check permissions on host directory
3. Ensure sufficient disk space
4. Restore from backup if available

Issue: Slow performance

Solution:
1. Check server resources (CPU/RAM)
2. Consider upgrading server specs
3. Enable compression in reverse proxy
4. Monitor Docker resource usage

Backup and Recovery

Create Backup:

# Backup data volume
docker run --rm -v journiv_data:/data -v $(pwd):/backup alpine \
  tar czf /backup/journiv-backup-$(date +%Y%m%d).tar.gz -C /data .

Restore Backup:

# Stop Journiv
docker-compose down

# Restore data
docker run --rm -v journiv_data:/data -v $(pwd):/backup alpine \
  sh -c "rm -rf /data/* && tar xzf /backup/backup-file.tar.gz -C /data"

# Start Journiv
docker-compose up -d

Getting Help

If issues persist:

  1. Check the official documentation
  2. Search GitHub Issues
  3. Join the Discord community
  4. Email support: journiv@protonmail.com

Remember: Journiv is in beta. Always maintain regular backups of your journal data before updating.