{"id":19485727,"url":"https://github.com/devforth/onlogs","last_synced_at":"2025-04-25T17:30:37.390Z","repository":{"id":64656160,"uuid":"542994945","full_name":"devforth/OnLogs","owner":"devforth","description":"Lightweight docker logs web viewer","archived":false,"fork":false,"pushed_at":"2025-04-22T13:54:27.000Z","size":20221,"stargazers_count":88,"open_issues_count":5,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-22T14:50:04.797Z","etag":null,"topics":["docker","logs"],"latest_commit_sha":null,"homepage":"","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devforth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-09-29T08:04:31.000Z","updated_at":"2025-04-11T10:24:25.000Z","dependencies_parsed_at":"2024-04-24T08:28:57.212Z","dependency_job_id":"21b7d8ed-abc2-4de7-8762-20fb704e5836","html_url":"https://github.com/devforth/OnLogs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devforth%2FOnLogs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devforth%2FOnLogs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devforth%2FOnLogs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devforth%2FOnLogs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devforth","download_url":"https://codeload.github.com/devforth/OnLogs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250861923,"owners_count":21499184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","logs"],"created_at":"2024-11-10T20:29:50.554Z","updated_at":"2025-04-25T17:30:36.608Z","avatar_url":"https://github.com/devforth.png","language":"Svelte","readme":"# OnLogs - Lightweight docker logs web viewer\n\n\u003ca href=\"https://devforth.io\"\u003e\u003cimg src=\"./.assets/df_powered_by.svg\" style=\"height:36px\"/\u003e\u003c/a\u003e\n\n![Passing Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/LbP22/7a0933f8cba0bddbcc95c8b850e32663/raw/onlogs_passing__heads_main.json) ![Coverage Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/LbP22/7a0933f8cba0bddbcc95c8b850e32663/raw/onlogs_units_coverage__heads_main.json) ![License Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/LbP22/7a0933f8cba0bddbcc95c8b850e32663/raw/license_MIT.json) \n\n![image](https://github.com/devforth/OnLogs/assets/1838656/38d0f184-3810-4389-a5af-2488b3a51276)\n\n\n\n### Benefits\n\n- 🔑 Simple and secure way to access logs of any Docker containers without server/SSH connection\n- 🏗️ Built with Golang \u0026 Svelte.js to extract maximum performance and keep the image and RAM footprint as small as possible. Logs storage implemented on top of lightweight LevelDB\n- 🧸 Installation is easy as docker runs command/compose snippet. HTTP port exposed and could be routed from Nginx/Traefik/Directly\n- 🖱 Get every service realtime logs stream with 1 click \u003cimg src=\"./.assets/1.gif\"/\u003e\n- 📱 Check logs from your smartphone (insane, but we know it happens that you need it)\n- 🧾 Open-source, commercial-friendly MIT license\n- 💾 Small size of Docker image (~ 13 MB)\n- 👥 Share access to logs with team members, revoke any time\n\n### Features\n\n- 💻 One host can be used to view logs from all other hosts in case you are running Cluster\n- 🔗 Share log messages to colleagues via link \u003cimg src=\"./.assets/2.gif\"/\u003e\n- 💽 Clear original docker logs to keep your storage size.\n- 📊 Error/Info/Debug Statistics\n- 🔎 Search through logs (configurable case sensitivity)\n- 👁 View parameters (parsing JSON, showing local/UTC time for every logline)\n- 🔴 Realtime logs updating\n\n### Roadmap\n\n- 🗂 Grouping hosts\n- 🏷 Search and filter by tags (log status, time)\n- 🔌Plugins and internal ability to notify about some event (e.g. notify when Error happens)\n- 📊 Improved statistics\n\n## Hello world \u0026 usage\n### Docker Compose example with traefik\n```sh\n  onlogs:\n    image: devforth/onlogs\n    restart: always\n    environment:\n      - ADMIN_USERNAME=admin\n      - ADMIN_PASSWORD=\u003cany password\u003e\n      - PORT=8798\n    #  - ONLOGS_PATH_PREFIX=/onlogs if want to use with path prefix\n\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.onlogs.rule=Host(`\u003cyour host\u003e`)\"  # if using on subdomain, e.g. https://onlogs.yourdomain.com\n    #  - traefik.http.routers.onlogs.rule=PathPrefix(`/onlogs`) # if want to use with a path prefix, e.g. https://yourdomain.com/onlogs\n      - \"traefik.http.services.onlogs.loadbalancer.server.port=8798\"\n    volumes:\n     - /var/run/docker.sock:/var/run/docker.sock\n     - /var/lib/docker/containers:/var/lib/docker/containers # if you want to delete duplicating logs from docker\n     - /etc/hostname:/etc/hostname\n     - onlogs-volume:/leveldb\n\nvolumes:\n  onlogs-volume:\n```\n\n### Docker Run example with traefik\n```sh\ndocker run --restart always -e ADMIN_USERNAME=admin -e PASSWORD=\u003cany password\u003e -e PORT=8798 \\\n    -v /var/run/docker.sock:/var/run/docker.sock:ro \\\n    -v /var/lib/docker/containers:/var/lib/docker/containers \\\n    -v /etc/hostname:/etc/hostname \\\n    -v onlogs-volume:/leveldb \\ \n    --label traefik.enable=true \\\n    --label traefik.http.routers.onlogs.rule=Host\\(\\`\u003cyour host\u003e\\`\\) \\ \n    --label traefik.http.services.onlogs.loadbalancer.server.port=8798 devforth/onlogs\n```\n\nOnce done, just go to \u003cyour host\u003e and login as \"admin\" with \u003cany password\u003e.\n\n## Available Environment Options:\n| Environment Variable       | Description   | Defaults | Required |\n|----------------------------|---------------------------------|--------|-----------------|\n| ADMIN_USERNAME           | Username for initial user                        | `admin`                 | if `AGENT=false`\n| ADMIN_PASSWORD           | Password for initial user                        |                    | if `AGENT=false`\n| PORT               | Port to listen on                                | `2874`             | if `AGENT=false`\n| JWT_SECRET         | Secret for JWT tokens for users                  | Generates randomly | -\n| ONLOGS_PATH_PREFIX | Base path if you using OnLogs not on subdomain   |                    | only if using on path prefix\n| AGENT             | Toggles agent mode. If enabled, there will be no web interface available, and all logs will be sent  and stored on HOST                                                      | `false` | -\n| HOST               | Url to OnLogs host from protocol to domain name. |                    | if `AGENT=true`\n| ONLOGS_TOKEN       | Token that will use an agent to authorize and connect to HOST | Generates with OnLogs interface   | if `AGENT=true`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevforth%2Fonlogs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevforth%2Fonlogs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevforth%2Fonlogs/lists"}