{"id":16984678,"url":"https://github.com/not-nik/mirra","last_synced_at":"2025-03-22T01:19:30.900Z","repository":{"id":104028947,"uuid":"481376981","full_name":"Not-Nik/mirra","owner":"Not-Nik","description":"Manage your mirrors with ease","archived":false,"fork":false,"pushed_at":"2024-01-17T20:05:40.000Z","size":121,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T05:08:57.090Z","etag":null,"topics":["file-sharing","file-synchronization","mirror","mirroring"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Not-Nik.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-04-13T21:18:53.000Z","updated_at":"2022-04-21T06:11:16.000Z","dependencies_parsed_at":"2024-01-17T21:34:29.939Z","dependency_job_id":"1db1a64a-b282-4f8a-9c2c-2c943f8db957","html_url":"https://github.com/Not-Nik/mirra","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/Not-Nik%2Fmirra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Not-Nik%2Fmirra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Not-Nik%2Fmirra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Not-Nik%2Fmirra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Not-Nik","download_url":"https://codeload.github.com/Not-Nik/mirra/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244890504,"owners_count":20527111,"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":["file-sharing","file-synchronization","mirror","mirroring"],"created_at":"2024-10-14T02:33:27.422Z","updated_at":"2025-03-22T01:19:30.878Z","avatar_url":"https://github.com/Not-Nik.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ch1\u003emirra\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003e\nManage your mirrors with ease (likely easier than in real-life\n[depends on your experience with real-life mirrors])\n\u003c/strong\u003e\u003c/p\u003e\n\u003c/div\u003e\n\nMirra allows you to create and manage mirror sites that automatically synchronise data between\nthem. Any changes on a local root mirror will immediately be reflected on any remote mirra nodes.\n\n## Usage\n\nA mirror can be a root and a node for several modules at the same time. A node can query all\navailable modules from a remote mirra and then decide which one it wants to synchronise.\n\n### Creating a new root mirra\n\nCreating a new mirror with mirra is super easy:\n\n1. Create a new empty directory\n\n```shell\n$ mkdir my_mirror\n```\n\n2. Put all your data into that\n3. Initialise mirra:\n\n```shell\n$ ls\nmy_mirror\n$ mirra\nmirra name?: \u003cput your name here\u003e\nmirra port? [6007]: \u003coptional: put a port here\u003e\n# Mirra will now generate some keys, wait until that is done,\n# then stop mirra with CTRL+C\n```\n\n4. Register your data with mirra.\n\n```shell\n$ mirra share my_mirror\n```\n\nDone! Running mirra will enable anyone to access your data via the port you specified.\nAdditionally a web server will run on port 80, to allow users to download files via their browser.\n\n### Mirror an existing mirra\n\n1. `cd` into the folder where you want the module to be stored.\n2. Initialise mirra:\n\n```shell\n$ mirra\nmirra name?: \u003cput your name here\u003e\nmirra port? [6007]: \u003coptional: put a port here\u003e\n# Mirra will now generate some keys, wait until that is done,\n# then stop mirra with CTRL+C\n```\n\n4. Sync the remote module\n\n```shell\n$ mirra sync remote.mirra.domain[:port] module_name\n```\n\nRunning mirra will automatically create a directory for your module, load the module and synchronise\nany changes from the remote mirra. Any other mirra will also be able to synchronise data from this\nmodule as if the local node were a root mirra. Users will be able to browser the module via their\nbrowser.\n\n## Roadmap\n\nMirra isn't fully usable yet. This is what's to come:\n\n- [x] Basic usage\n- [x] Easier mirra setup\n- [ ] (On-hold) Get a remote mirras index via CLI\n- [x] Web interface for downloading a mirras data\n- [ ] Let a root mirra verify official nodes\n- [ ] Automatic redirects based on location\n\n## Protocol\n\nMirra uses an entirely custom protocol to synchronise changes across hosts.\n\nTODO: Write docs for protocol\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnot-nik%2Fmirra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnot-nik%2Fmirra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnot-nik%2Fmirra/lists"}