Skip to content
/ isley Public

Self-Hosted Cannabis Grow Journal with sensor tracking for AC Infinity Controllers and Ecowitt Soil Sensors

License

Notifications You must be signed in to change notification settings

dwot/isley

Repository files navigation

🌱 Isley - Self-Hosted Cannabis Grow Journal

Isley is a self-hosted cannabis grow journal designed to help homegrowers 🌿 track and monitor their plants. With a clean interface and integrations with popular grow equipment, Isley makes managing your grow simple and effective.

I created Isley because it was the tool I wanted but couldn't find. Existing options were limited to phone apps and websites that either didn’t work how I hoped or didn’t work at all. I wanted a single, self-hosted solution to replace:

  • 🌡️ Vendor apps for sensor data and graphs.
  • 📝 Spreadsheets for seed, harvest, and progress tracking.
  • 🗒️ Notepads and memory for feeding/watering history and notes.

Isley doesn't aim to revolutionize your grow. It centralizes your tools into one convenient interface, helping you track, trend, and elevate your grow.

Isley Dashboard

For full details, screenshots, and feature highlights, visit our official site 🌐 at https://isley.dwot.io.


🚀 Key Features

  • 📒 Grow Logs: Track plant growth, watering, and feeding schedules.
  • 🌡️ Environmental Monitoring: View real-time data from grow equipment (AC Infinity, Ecowitt).
  • 📸 Image Uploads: Attach photos to your grow logs for visual tracking.
  • 🌱 Seed Inventory: Manage your seed collection and strain library.
  • 📊 Harvest Tracking: Record harvest details and yields.
  • 📈 Graphs and Charts: Visualize environmental data and plant progress over time.
  • ⚙️ Customizable Settings: Add custom activities and measurements for your grow.
  • 📱 Mobile-Friendly: Works on desktop and mobile devices for convenience.

🛠️ Features on the Roadmap

  • 🌍 Internationalization: Support for multiple languages.
  • 🔔 Alerts and Notifications: Set custom alerts for environmental conditions.
  • 📦 Export and Backup: Download your grow data for offline storage.
  • 📷 Webcam Feeds: Integrate live webcam feeds for visual monitoring.
  • 🗒️ Logging and Debugging: Improved logging and debugging tools for troubleshooting.

🚀 Quick Start

Isley runs in Docker 🐳. Support for the Windows Executable 💻 has been deprecated and is no longer recommended for production use due to its reliance on SQLite and inability to scale.

SQLite was ideal for early development and lightweight single-container deployments. However, it introduces write contention issues under production loads. PostgreSQL is now the recommended database backend for all production deployments.

If you don’t already have Docker, follow the Docker installation instructions. For docker-compose, you can install it here.


🐳 Option 1: Docker with PostgreSQL (Recommended)

Use the docker-compose.postgres.yml file to deploy Isley with a PostgreSQL backend:

  1. Create docker-compose.postgres.yml (or use the provided one):
version: '3.8'

services:
  isley:
    image: dwot/isley:latest
    ports:
      - "8080:8080"
    environment:
      - ISLEY_PORT=8080
      - ISLEY_DB_DRIVER=postgres
      - ISLEY_DB_HOST=postgres
      - ISLEY_DB_PORT=5432
      - ISLEY_DB_USER=isley
      - ISLEY_DB_PASSWORD=supersecret
      - ISLEY_DB_NAME=isleydb
    depends_on:
      - postgres
    volumes:
      - isley-uploads:/app/uploads
    restart: unless-stopped

  postgres:
    image: postgres:16
    environment:
      - POSTGRES_DB=isleydb
      - POSTGRES_USER=isley
      - POSTGRES_PASSWORD=supersecret
    volumes:
      - postgres-data:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  postgres-data:
  isley-uploads:
  1. Start the container:
docker-compose -f docker-compose.postgres.yml up -d
  1. Access Isley:
  • Open your browser:
    • http://localhost:8080 if running locally.
    • http://<server-ip>:8080 if running remotely.
  • Default Username: admin
    Default Password: isley

You will be prompted to change your password on first login.


🔄 Optional: Migrate from SQLite to PostgreSQL

If you're upgrading from an existing SQLite-based deployment to PostgreSQL, use the provided docker-compose.migration.yml file. This configuration mounts both the existing SQLite volume and the new PostgreSQL data volume into the container.

On startup, Isley will automatically check:

  • If an existing SQLite database is present in /app/data/.
  • If the target PostgreSQL instance has no user data.

If both conditions are met, Isley will import your data from SQLite into PostgreSQL automatically.

📄 docker-compose.migration.yml

version: '3.8'

services:
  isley:
    image: dwot/isley:latest
    ports:
      - "8080:8080"
    environment:
      - ISLEY_PORT=8080
      - ISLEY_DB_DRIVER=postgres
      - ISLEY_DB_HOST=postgres
      - ISLEY_DB_PORT=5432
      - ISLEY_DB_USER=isley
      - ISLEY_DB_PASSWORD=supersecret
      - ISLEY_DB_NAME=isleydb
    depends_on:
      - postgres
    volumes:
      - isley-db:/app/data
      - isley-uploads:/app/uploads
    restart: unless-stopped

  postgres:
    image: postgres:16
    environment:
      - POSTGRES_DB=isleydb
      - POSTGRES_USER=isley
      - POSTGRES_PASSWORD=supersecret
    volumes:
      - postgres-data:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  isley-db:
  postgres-data:
  isley-uploads:

After migration, you can switch to docker-compose.postgres.yml for your regular production deployment. Be sure to back up your SQLite volume (isley-db) before running the migration just in case.


⚪ Option 2: Docker with SQLite (Legacy)

This method is still available for testing or lightweight local deployments.

  1. Use docker-compose.sqlite.yml:
version: '3.8'

services:
  isley:
    image: dwot/isley:latest
    ports:
      - "8080:8080"
    environment:
      - ISLEY_PORT=8080
      - ISLEY_DB_DRIVER=sqlite
    volumes:
      - isley-db:/app/data
      - isley-uploads:/app/uploads
    restart: unless-stopped

volumes:
  isley-db:
  isley-uploads:
  1. Start the container:
docker-compose -f docker-compose.sqlite.yml up -d
  1. Access Isley:
  • Open your browser:
    • http://localhost:8080 if running locally.
    • http://<server-ip>:8080 if running remotely.
  • Default Username: admin
    Default Password: isley
  1. Data Storage:
  • /data: SQLite database storage.
  • /uploads: Image uploads.

These are mapped via Docker volumes. Add them to your backup process to prevent data loss.

Note: This setup is not recommended for production use due to SQLite's limitations with concurrent writes.


💻 Deprecated: Windows Executable

Running Isley on Windows via isley.exe is now deprecated and only supports SQLite. It is no longer recommended for active or production deployments.

If you still wish to run the executable for testing:

  1. Download from the Releases Page.
  2. Run via command prompt:
set ISLEY_PORT=8080
isley.exe
  1. Data will be stored in data/ and uploads/ directories next to the executable.

⚙️ Configuration

All settings can be configured via the Settings icon in the app. You can:

  • 🔧 Enable/disable integrations (e.g., AC Infinity, Ecowitt).
  • 🔑 Set API keys or device IPs.
  • 🔍 Scan for devices and start data collection.

To override the default port:

ISLEY_PORT=8080

Environment variables for Postgres:

ISLEY_DB_DRIVER=postgres
ISLEY_DB_HOST=postgres
ISLEY_DB_PORT=5432
ISLEY_DB_USER=isley
ISLEY_DB_PASSWORD=supersecret
ISLEY_DB_NAME=isleydb

For SQLite:

ISLEY_DB_DRIVER=sqlite

📝 Notes

  • Isley is in active development 🚧. Breaking changes may occasionally occur.
  • Found a bug or have a suggestion? Open an issue on the GitHub repository.

🛡️ Recommendations

For production:

  • 🐳 Use Docker with PostgreSQL and a reverse proxy (e.g., Nginx, Traefik) to handle TLS and external access.
  • 💾 Backup Directories/Volumes:
    • postgres-data for PostgreSQL
    • /uploads for user content
  • ❌ Avoid using SQLite or the Windows executable in production.
  • 🛠️ Use volume mounts for persistence and scheduled backups.

🌐 For more details, screenshots, and the latest updates, visit: https://isley.dwot.io.

About

Self-Hosted Cannabis Grow Journal with sensor tracking for AC Infinity Controllers and Ecowitt Soil Sensors

Topics

Resources

License

Stars

Watchers

Forks