{"id":25515683,"url":"https://github.com/robinradic/supervisord-manager","last_synced_at":"2025-12-08T19:30:31.387Z","repository":{"id":277079090,"uuid":"931262143","full_name":"RobinRadic/supervisord-manager","owner":"RobinRadic","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-12T01:57:09.000Z","size":103393,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-12T02:40:36.123Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobinRadic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2025-02-12T01:28:42.000Z","updated_at":"2025-02-12T01:57:12.000Z","dependencies_parsed_at":"2025-02-12T02:50:59.029Z","dependency_job_id":null,"html_url":"https://github.com/RobinRadic/supervisord-manager","commit_stats":null,"previous_names":["robinradic/supervisord-manager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinRadic%2Fsupervisord-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinRadic%2Fsupervisord-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinRadic%2Fsupervisord-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinRadic%2Fsupervisord-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobinRadic","download_url":"https://codeload.github.com/RobinRadic/supervisord-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239666794,"owners_count":19677204,"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":[],"created_at":"2025-02-19T13:33:27.691Z","updated_at":"2025-12-08T19:30:31.381Z","avatar_url":"https://github.com/RobinRadic.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Supervisord Manager\n\n**Supervisord Manager** is a web-based interface designed to manage Supervisord processes. It provides a user-friendly way to monitor and control processes managed by Supervisord, making it easier to handle process management tasks.\n\n### Features\n\n- **Web Interface**: A simple and intuitive web interface to manage Supervisord processes.\n- **User Authentication**: Secure access with user authentication.\n- **Process Control**: Start, stop, and restart processes directly from the web interface.\n- **Configuration Management**: Manage Supervisord configuration files.\n- **Real-time Monitoring**: View real-time status and logs of managed processes.\n\n![Preview](https://i.imgur.com/l2DFjuG.gif)\n\n### Installation\n- **install package**\n    ```bash\n    npm install -g supervisord-manager\n    ```\n- **configure /etc/supervisor/supervisord.conf**\n \n    the `username` does not have to be a system user. you can make one up. its used for authentication in to the RPC_XML.\n    same goes for the `password`\n    ```ini \n    [unix_http_server]\n    file=/var/run/supervisor.sock   ; (the path to the socket file)\n    chmod = 0777\n    username = \u003cusername\u003e\n    password = \u003cpassword\u003e\n    \n    [inet_http_server]\n    port = 127.0.0.1:9005\n    username = \u003cusername\u003e\n    password = \u003cpassword\u003e\n    ```\n  \n\n### Simple usage\n```bash\nsupervisord-manager serve --port 1234 \\\n    --admin-email \"admin@admin.com\" --admin-password test --admin-name Admin \\\n    --rpc-host 127.0.0.1:9005 --rpc-username \u003cusername\u003e --rpc-password \u003cpassword\u003e\n     \n# or simply\nsupervisord-manager serve --config ./config.json\n```\nWill host the web interface on http://localhost:1234. You can log in with the admin credentials.\n\n\u003e Note that for full functionality, the user running the server should have read/write access to `/etc/supervisor/conf.d`\n\n### Full installation\nGenerates configuration file and you can choose between systemd service or supervisor program   \n```bash\nmkdir ~/.supervisord-manager\ncd ~/.supervisord-manager\nsupervisord-manager init\n```\n\nWill generate\n```\n- config.json\n- supervisord-monitor.service\n- supervisord-monitor.conf\n- install-as-systemd.sh\n- install-as-supervisor.sh\n```\n\n- Open and edit `config.json` and set all required values\n- Open and review `supervisord-monitor.conf` or if you want to use systemd `supervisord-monitor.service`, make sure the usage of node version \u0026 run as user are correct\n- Run `install-as-supervisor.sh` to symlink `supervisord-monitor.conf` into `/etc/supervisor/conf.d` and reload \u0026 start the service\n- **OR** Run `install-as-systemd.sh` to symlink `supervisord-monitor.service` into `/lib/systemd/system` and reload \u0026 start the service\n\n\n#### Configuration\nThe config.json should be structured like this\n```ts\nexport interface Configuration {\n    port?: number;\n    supervisor?: {\n        client?: {\n            host?:string\n            username?:string\n            password?:string\n        };\n        server?: {\n            configurationFilePath?: string;\n        }\n    };\n    users?: Array\u003c{ name: string, email: string, password: string }\u003e;\n}\n```\n\nExample:\n```json\n{\n    \"port\": 4035,\n    \"supervisor\": {\n        \"client\": {\n            \"host\": \"http://localhost:9005\",\n            \"username\": \"\u003cusername\u003e\",\n            \"password\": \"\u003cpassword\u003e\"\n        },\n        \"server\": {\n            \"configurationFilePath\": \"/etc/supervisor/supervisord.conf\"\n        }\n    },\n    \"users\": [\n        {\"name\": \"Admin\",\"email\": \"admin@admin.com\",\"password\": \"test1234\"}\n    ]\n}\n```\n\n### Security\nThis package is not meant to be accessed by outside hosts. \nIt is however possible and safe to use nginx or something likewise to make a reversed proxy.\nThis should be combined with only allowing a range of trusted IP addresses.\n\n```nginx\nserver {\n    listen 80;\n    server_name your_domain.com;\n\n    location / {\n        proxy_pass http://localhost:4035;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n\n        # Allow only specific IP addresses\n        allow 192.168.1.100;  # Replace with your allowed IP address\n        allow 192.168.1.101;  # Replace with another allowed IP address\n        deny all;             # Deny all other IP addresses\n    }\n}\n```\n\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobinradic%2Fsupervisord-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobinradic%2Fsupervisord-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobinradic%2Fsupervisord-manager/lists"}