{"id":13841592,"url":"https://github.com/codeskyblue/gosuv","last_synced_at":"2025-07-11T12:32:58.530Z","repository":{"id":40649897,"uuid":"41743954","full_name":"codeskyblue/gosuv","owner":"codeskyblue","description":"Deprecated!!! Process managerment writtern by golang, inspired by python-supervisor","archived":true,"fork":false,"pushed_at":"2020-12-07T07:38:10.000Z","size":7955,"stargazers_count":644,"open_issues_count":42,"forks_count":181,"subscribers_count":46,"default_branch":"master","last_synced_at":"2024-08-05T17:28:46.144Z","etag":null,"topics":["golang","supervisor"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/codeskyblue.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}},"created_at":"2015-09-01T14:37:14.000Z","updated_at":"2024-08-01T09:55:39.000Z","dependencies_parsed_at":"2022-08-27T21:02:34.614Z","dependency_job_id":null,"html_url":"https://github.com/codeskyblue/gosuv","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Fgosuv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Fgosuv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Fgosuv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Fgosuv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codeskyblue","download_url":"https://codeload.github.com/codeskyblue/gosuv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225720432,"owners_count":17513600,"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":["golang","supervisor"],"created_at":"2024-08-04T17:01:16.415Z","updated_at":"2024-11-21T11:31:25.996Z","avatar_url":"https://github.com/codeskyblue.png","language":"JavaScript","readme":"# gosuv\n[![Build Status](https://travis-ci.org/codeskyblue/gosuv.svg)](https://travis-ci.org/codeskyblue/gosuv)\n\n[中文README](README_ZH.md) 不是很全，能看懂英文的还是尽量看英文\n\n## current is in beta\nProcess management writtern by golang, inspired by python-supervisor\n\n## So why write another supervisor?\nI have been using python-supervisor for many years and there are something uncomfortable feelings.\n\n1. Log can't contains ANSI color chars\n1. The configuration file can add on the web, often forgot some settings.\n1. `supervisorctl reload` will cause supervisord restarted\n1. Hard to set status change to fatal notifications.\n1. No process performance monitor page.\n1. Program starts with no common environ, eg, missing HOME and USER variable\n1. Kill process default is not group kill which make sub process still running.\n1. More... will added when I think of it.\n\n## Features\n\n* [x] Web control page\n\t\n  * [x] Start, Stop, Tail, Reload\n  * [x] Realtime log\n\t* [x] Add program support\n\t* [x] Edit support\n\t* [x] Delete support\n\t* [x] Memory and CPU monitor\n\t* [ ] Path auto complete \u003chttps://github.com/twitter/typeahead.js\u003e\n\n* [x] HTTP Basic auth\n* [x] Github webhook\n* [ ] Single log page, include search support\n* [ ] 中文文档\n\n## Requirements\nGo version at least `1.6+`\n\n## Installation\n### Binaries\nThe fastest way is run with. Default install location is `/usr/local/bin`, change env-var `BINDIR` will also change install location.\n\n```\ncurl https://raw.githubusercontent.com/codeskyblue/gosuv/master/get.sh | bash\n```\n\nOr just download binaries\n\n\u003chttps://github.com/codeskyblue/gosuv/releases\u003e\n\nThanks to [goreleaser](https://github.com/goreleaser/goreleaser) which makes publish binaries automaticly.\n\n### Build from source\n```sh\ngo get -d github.com/codeskyblue/gosuv\ncd $GOPATH/src/github.com/codeskyblue/gosuv\ngo generate # package html resources into go\ngo build -tags vfs\n```\n\n## Quick start\nAfter you installed gosuv, the first thing is to start server.\n\n```sh\ngosuv start-server\n```\n\nBasic operations\n\n```sh\n$ gosuv status\nPROGRAM NAME            STATUS\ntest                    running\ntest_again              stopped\n\n$ gosuv stop test\n$ gosuv start test\n```\n\nOpen web \u003chttp://localhost:11313\u003e to see the manager page. And follow the gif to add a program to gosuv.\n\n\n![gosuv web](docs/gosuv.gif)\n\n## Configuration\nDefault config file stored in directory `$HOME/.gosuv/`, Set env-var `GOSUV_HOME_DIR` can change config file store directory.\n\n- file `programs.yml` contains all program settings.\n- file `config.yml` contains server config\n\nFile `config.yml` can be generated by `gosuv conftest`\n\nExample config.yaml\n\n```\nserver:\n  httpauth:\n    enabled: true\n    username: admin\n    password: admin\n  addr: :8083\n  name: 10.10.99.177\n  master: \"\"\nnotifications:\n  dingtalk:\n    groups:\n    - secret: c1b8032******************aa736a\n      mobile:\n      - \"153********\"\nclient:\n  server_url: http://admin:admin@localhost:8083\n```\n\nmaster 的支持来自  https://github.com/ihaiker/distributed-gosuv\nLogs can be found in `$HOME/.gosuv/log/`\n\nEdit config file(default located in `$HOME/.gosuv/programs.yml`) and run `gosuv reload` will take effect immediately.\n\n## Design\nHTTP is follow the RESTFul guide.\n\nGet or Update program\n\n`\u003cGET|PUT\u003e /api/programs/:name`\n\nAdd new program\n\n`POST /api/programs`\n\nDel program\n\n`DELETE /api/programs/:name`\n\n## State\nOnly 4 states. [ref](http://supervisord.org/subprocess.html#process-states)\n\n![states](docs/states.png)\n\n## Notification\nConfiguration example\n\n```yaml\n- demo-program:\n  command: ...\n  notifications:\n    pushover:\n      api_key: [token]\n      users:\n      - [user1]\n      - [user2]\n```\n\nNow only support [pushover](https://pushover.net/api), and only status change to fatal will get notified.\n\n## Integrate with github (todo)\nThis is feature that will helps update your deployment environment once your updated in the github.\n\nThis part is set in the `programs.yml`, take look the example\n\n```yml\n- demo-program:\n  command: python app.py\n  directory: /opt/demo\n  webhook:\n    github:\n      secret: 123456\n      command: git pull origin master\n```\n\n## Alternative\n- Go implementation of supervisor \u003chttps://github.com/ochinchina/supervisord\u003e\n\n## LICENSE\n[MIT](LICENSE)\n","funding_links":[],"categories":["JavaScript","JavaScript (485)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeskyblue%2Fgosuv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodeskyblue%2Fgosuv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeskyblue%2Fgosuv/lists"}