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:
- Download the compose file:
curl -O https://raw.githubusercontent.com/journiv/journiv-app/latest/docker-compose.yml
-
Edit the environment variables in
docker-compose.yml(see Configuration section below) -
Start the application:
docker-compose up -d
Manual Installation (Development)
- Clone the repository:
git clone https://github.com/journiv/journiv-app.git
cd journiv-app
- The project appears to be a Flutter web application (based on source files). For development:
- Install Flutter SDK
- Run
flutter pub getto install dependencies - Use
flutter run -d chromefor web development
3. Configuration
Essential Environment Variables
Configure these in your docker-compose.yml or as Docker run parameters:
| Variable | Description | Example |
|---|---|---|
SECRET_KEY | Required - Secret key for session encryption | your-secret-key-here |
DOMAIN_NAME | Required - Your server's domain or IP | 192.168.1.1 or journiv.example.com |
PORT | Port to run the application (default: 8000) | 8000 |
DATA_PATH | Path 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
/datavolume 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:
- Ensure Flutter SDK is installed and configured for web:
flutter config --enable-web
- Build the web application:
flutter build web --release
- 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
-
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
-
PikaPods (One-click deployment)
- Use the PikaPods run button
- Managed hosting with automatic updates
-
Docker-Capable Hosting
- Any platform supporting Docker containers
- Examples: Railway, Render, Fly.io
Production Deployment Checklist
- Set strong
SECRET_KEYenvironment variable - Configure proper domain name in
DOMAIN_NAME - Set up HTTPS (via reverse proxy or cloudflare)
- Configure regular backups of
/datavolume - 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:
- Check the official documentation
- Search GitHub Issues
- Join the Discord community
- Email support: journiv@protonmail.com
Remember: Journiv is in beta. Always maintain regular backups of your journal data before updating.