{"id":23501533,"url":"https://github.com/brenekh/blinky","last_synced_at":"2025-04-15T19:42:39.249Z","repository":{"id":42314226,"uuid":"460305559","full_name":"BrenekH/blinky","owner":"BrenekH","description":"Pacman repository hosting server.","archived":false,"fork":false,"pushed_at":"2024-12-19T03:08:54.000Z","size":363,"stargazers_count":6,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T00:24:01.408Z","etag":null,"topics":["archlinux","cli","go","golang","golang-application","hacktoberfest","homeserver","linux","pacman","self-hosted","webserver"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BrenekH.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,"publiccode":null,"codemeta":null}},"created_at":"2022-02-17T06:14:28.000Z","updated_at":"2024-12-19T03:08:58.000Z","dependencies_parsed_at":"2023-01-19T16:45:28.269Z","dependency_job_id":"faf2ca2c-fbc7-4824-8015-65c071e12662","html_url":"https://github.com/BrenekH/blinky","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/BrenekH%2Fblinky","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenekH%2Fblinky/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenekH%2Fblinky/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenekH%2Fblinky/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BrenekH","download_url":"https://codeload.github.com/BrenekH/blinky/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249140786,"owners_count":21219360,"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":["archlinux","cli","go","golang","golang-application","hacktoberfest","homeserver","linux","pacman","self-hosted","webserver"],"created_at":"2024-12-25T07:18:24.583Z","updated_at":"2025-04-15T19:42:39.229Z","avatar_url":"https://github.com/BrenekH.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blinky\n\nSimple, all in one Pacman repository hosting server software.\n\n\u003c!-- TODO: Insert more badges here --\u003e\n[![GitHub](https://img.shields.io/github/license/BrenekH/blinky)](https://github.com/BrenekH/blinky/blob/master/LICENSE)\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/BrenekH/blinky)\n[![Go Report Card](https://goreportcard.com/badge/github.com/BrenekH/blinky)](https://goreportcard.com/report/github.com/BrenekH/blinky)\n[![Blinky CI/CD](https://github.com/BrenekH/blinky/actions/workflows/blinky-ci-cd.yaml/badge.svg)](https://github.com/BrenekH/blinky/actions/workflows/blinky-ci-cd.yaml)\n\n## Document Conventions\n\nThis Git repository contains both the Blinky server and the `blinky` CLI tool.\nIn order to keep track of which one is being talked about, the server will be referred to as either Blinky, the server, or `blinkyd`, depending on the context.\n\nLikewise, the CLI tool will be referred to as the CLI, or as simply `blinky`.\n\n## Installation\n\n### Docker (Server only)\n\n**Docker Compose Example:**\n\n```yaml\nversion: \"2.4\"\nservices:\n  blinky:\n    image: ghcr.io/brenekh/blinky:master\n    environment:\n      - BLINKY_REPO_PATH=/repos/repo_name\n    volumes:\n      - ./data:/data:rw\n      - ./repos:/repos:rw\n    ports:\n      - 9000:9000\n    restart: unless-stopped\n```\n\n### Source\n\nTo install the Blinky components from source, the [Go compiler](https://go.dev/dl) needs to be installed.\n\n#### Server\n\n`go install github.com/BrenekH/blinky/cmd/blinkyd@latest`\n\n#### CLI\n\n`go install github.com/BrenekH/blinky/cmd/blinky@latest`\n\n\u003c!-- ?Perhaps talk about installing shell completions? --\u003e\n\n### Package Managers\n\nCurrently, Blinky is not available in any package managers.\n\n## Usage\n\nThe following usage instructions are just the basics of how to use Blinky.\nFor a full run down, please visit the [Blinky wiki](https://github.com/BrenekH/blinky/wiki).\n\n### Server\n\n`blinkyd` supports 3 methods of configuration, command-line arguments, environment variables, and a TOML config file located at either `/etc/blinky/config.toml` or `$XDG_CONFIG_HOME/blinky/config.toml`.\nThe names are the same across each method, but with differing capitalization and word separators.\nThis document will only use command-line args, but a full table can be found in the [wiki](https://github.com/BrenekH/blinky/wiki).\n\n#### Setting up repository paths\n\nBlinky uses the same syntax as the Linux PATH variable to specify where the repository's files should be stored.\nThe required folders will be created if they do not exist.\nThe last element of the path is used as the name of the repo.\nFor example, the following command will create 3 repos: `repo1`, `repo2`, and `repo3`.\n\n`blinkyd --repo-path \"/mnt/storage1/repo1:/mnt/storage1/repo2:/opt/repo3\"`\n\n#### Change the port\n\nUsing `--http-port` the port Blinky uses for the HTTP server can be changed.\n\n#### Protecting the API\n\nA username and password can be set so that only those who know the username and password can manage packages.\n\nThe username is set by using `--api-uname` and the password is set with `--api-passwd`.\n\n#### Getting help from the terminal\n\nUsing `blinkyd --help` will output a usage text and exit the application.\n\n### CLI\n\n`blinky` has 4 basic commands: `login`, `logout`, `upload`, and `remove`.\n\n`login` is used to save the login credentials for a server.\n\n`logout` removes the saved credentials for a server.\n\n`upload` uploads new/updated packages to a repository hosted on a server.\n\n`remove` deletes packages from a repository on a server.\n\n**Examples:**\n\n```text\n$ blinky login --default https://blinky.example.com\nUsername: user\nPassword:\n\n$ blinky upload custom_repo my_package.pkg.tar.zst\n...\n\n$ blinky remove custom_repo my_package\n...\n\n$ blinky logout https://blinky.example.com\n...\n```\n\nMore detailed usage instructions can be found by running `blinky --help`.\n\n## Recommended Security Practices\n\n### HTTPS\n\nBecause Blinky uses the HTTP Basic Authentication standard, it is recommended to use an HTTPS certificate with a reverse proxy to encrypt the conversation between Blinky and clients.\n\n### Passwords in Shell History\n\nWhile `blinky` does support providing a password as a CLI flag, it is not a recommended method to do so.\n\nInstead, the interactive prompt should be used for entering passwords where possible.\n\n## Known Issues\n\n### Only x86_64 is supported\n\nBlinky is built with only the x86_64 architecture in mind, since that is all that Arch Linux officially supports.\nIf you require support for other architectures, please reach out either in the [issues](https://github.com/BrenekH/blinky/issues) or [discussions](https://github.com/BrenekH/blinky/discussions) and we can figure out how to make it work.\n\n## Frequently Asked Questions\n\n### What is wrong with `repo-add`?\n\n`repo-add` requires direct access to the directory that is being used to host the database and all of the package files.\nWhile this is fine for a local repository, building a hosted version that can be updated from anywhere starts to become more complicated than using an API.\nInstead of opening SSH, setting up Samba, or configuring a VPN, one can use the HTTP setup already required for both managing and consuming the repository.\n\n### Why is it called Blinky?\n\nAccording to Pac-Man lore, each of the four ghosts from the original game has a unique name.\nThe American versions of these names are Inky, Blinky, Pinky, and Clyde and because servers often have blinky lights, Blinky was chosen as the name.\n\n## License\n\nBlinky is licensed under the GNU General Public License version 3, a copy of which can be found in the [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenekh%2Fblinky","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrenekh%2Fblinky","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenekh%2Fblinky/lists"}