Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/simonwep/ocular-docker
Ready-to-use docker compose setup for ocular ✨
https://github.com/simonwep/ocular-docker
budget budgeting docker-compose self-hosted
Last synced: about 2 months ago
JSON representation
Ready-to-use docker compose setup for ocular ✨
- Host: GitHub
- URL: https://github.com/simonwep/ocular-docker
- Owner: simonwep
- Created: 2023-08-01T15:20:12.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-27T16:43:47.000Z (2 months ago)
- Last Synced: 2024-10-27T19:44:04.316Z (2 months ago)
- Topics: budget, budgeting, docker-compose, self-hosted
- Language: Shell
- Homepage: https://github.com/simonwep/ocular
- Size: 16.6 KB
- Stars: 10
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Quick start
To download the latest release and start it via docker-compose, run:
```sh
bash <(curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/simonwep/ocular-docker/refs/heads/main/setup.sh)
```> [!NOTE]
> This will perform the same steps as described in the [manual setup](#manual-setup-and-migration) section and ask you questions if needed.
> You can always [take a look at the script](setup.sh) before running it, or perform [these steps manually](#manual-setup-and-migration).## Manual setup and migration
### First time setup
This is the docker-compose setup for [ocular](https://github.com/simonwep/ocular).
To deploy it, follow these steps:1. Download the [latest release](https://github.com/simonwep/ocular-docker/releases/latest) and extract it. Do not clone this repository!
2. Copy the `.env.example` to `.env`, if your app is only used locally make sure to set `GENESIS_JWT_COOKIE_ALLOW_HTTP` to `true` if you want to use it without https.
3. Run `./gen-passwords.sh` to generate secrets and an initial admin user.
4. Run `docker compose up -d`.
5. Ocular should be accessible under `http://localhost:3030` in your browser :)### Migrating to a new version
To migrate to a newer version, follow these steps:
1. Backup the `./data` folder. The folder contains all the user-data.
2. Download the [latest release](https://github.com/simonwep/ocular-docker/releases/latest) and extract it.
3. Copy the `.env.example` to `.env`, adjust the values if needed. **You don't need to run `./gen-passwords.sh` again.**
4. Copy your old `./data` folder to the new location.
5. Run `docker compose up -d`.## Admin controls
You can use [genesis's CLI](https://github.com/simonwep/genesis?tab=readme-ov-file#cli) to manage users.
For example, to change a user's password:```sh
docker run --rm -v "$(pwd)/data:/app/.data" --env-file .env ghcr.io/simonwep/genesis:latest users update --password {new password} {username}
```For help run:
```sh
docker run --rm -v "$(pwd)/data:/app/.data" --env-file .env ghcr.io/simonwep/genesis:latest help
```## FAQ
### Where can I find the release notes?
For release notes, check out the [latest release](https://github.com/simonwep/ocular/releases/latest) in the [ocular](https://github.com/simonwep/ocular) repository.
This repo is just for production releases :)### Help! I can't log in to the app over the network!
If you don't use https, make sure to set `GENESIS_JWT_COOKIE_ALLOW_HTTP` to `true` in your `.env` file.
Otherwise, run it behind a reverse proxy like [nginx](https://www.nginx.com/) and get a free certificate from [letsencrypt](https://letsencrypt.org/).Make sure to restart the app after changing the `.env` file via `docker compose restart`.
### What kind of config do I need if I want to run it behind an nginx reverse proxy?
Here's an example of a basic nginx config (v1.25+):
```nginx
server {
listen 443 quic reuseport;
listen 443 ssl;server_name ocular.example.com;
add_header Alt-Svc 'h3=":443"; ma=86400';location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_read_timeout 300s;
proxy_pass http://127.0.0.1:3030$request_uri;
}# Specify the path to your certificate and key, or use letsencrypt
#ssl_certificate
#ssl_certificate_key
}
```