{"id":23463512,"url":"https://github.com/blackieops/nucleus","last_synced_at":"2025-04-14T08:20:19.476Z","repository":{"id":57748079,"uuid":"450729667","full_name":"blackieops/nucleus","owner":"blackieops","description":"🌤 ⚛ [WIP] Self-hosted cloud file sync backend compatible with Nextcloud clients.","archived":false,"fork":false,"pushed_at":"2023-06-01T20:22:38.000Z","size":216,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T17:56:33.426Z","etag":null,"topics":["cloud-native","go","lightweight","nextcloud","self-hosted"],"latest_commit_sha":null,"homepage":"","language":"Go","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/blackieops.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":"2022-01-22T05:48:51.000Z","updated_at":"2024-07-06T17:28:30.000Z","dependencies_parsed_at":"2024-06-20T15:52:45.602Z","dependency_job_id":null,"html_url":"https://github.com/blackieops/nucleus","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/blackieops%2Fnucleus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blackieops%2Fnucleus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blackieops%2Fnucleus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blackieops%2Fnucleus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blackieops","download_url":"https://codeload.github.com/blackieops/nucleus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248844036,"owners_count":21170505,"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":["cloud-native","go","lightweight","nextcloud","self-hosted"],"created_at":"2024-12-24T09:12:23.097Z","updated_at":"2025-04-14T08:20:19.444Z","avatar_url":"https://github.com/blackieops.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nucleus: self-hosted file storage backend\n\n[![Test Suite](https://github.com/blackieops/nucleus/actions/workflows/tests.yml/badge.svg)](https://github.com/blackieops/nucleus/actions/workflows/tests.yml)\n\nNucleus helps you sync and store your files on your own infrastructure.\n\n⚠️ **Warning:** this is a very early-stage project that is NOT feature complete,\nsafe to use, nor secure. Do not use this in production yet.\n\n## Project Goals\n\nNucleus' primary goal is to be a fast, secure, and light-weight cloud file\nstorage and sync backend.\n\n1. **Pluggable Storage** - Nucleus should allow configuring different backing\n   storage implementations, for example with cloud object storage.\n2. **Files only** - Nucleus does not want to replace your entire workgroups\n   solution, your project management software, your video call software, your\n   chat software... Nucleus is exclusively a file storage solution.\n4. **[Nextcloud][nc]-compatible** - To easily fit into existing workflows, Nucleus\n   should be reasonably compatible with Nextcloud client apps, exposing an API\n   they expect so you can swap your Nextcloud server for Nucleus and pick up\n   where you left off with minimal interruption.\n5. **Declarative configuration** - Nucleus should not require mutating itself\n   on-disk or writing any configuration.\n6. **Scale-out, not up** - Nucleus should easily allow for scale-out\n   infrastructure, support immutable filesystems, and fit right at home in a\n   cloud-native environment.\n7. **Gotta go fast** - Nucleus should be fast, efficient, and require as few\n   server resources as possible.\n\n[nc]: https://www.nextcloud.com\n\n## Development Setup\n\nNucleus is a [Go][go] application, using Go modules for dependency management.\n\n[go]: https://go.dev\n\nA `docker-compose.yml` is provided to run the dependent services (i.e.,\npostgresql). Use any Docker Compose-compatible tool to get that started:\n\n```\n$ docker compose up -d\n```\n\nFirst fetch and install dependencies:\n\n```\n$ go mod tidy\n```\n\nThen set up your config file. An example is provided:\n\n```\n$ cp config.yaml.example config.yaml\n```\n\nOnce configured, you can migrate the database:\n\n```\n$ go run . -migrate\n```\n\nAnd then run the project:\n\n```\n$ go run .\n```\n\n### Test Data\n\nIf you want to start off with a test user, credentials, and possibly other\nplaceholder data, you can run the seeds:\n\n```\n$ go run . -seed\n```\n\nThe default user is `admin` with a password credential of `password123`.\n\n### Testing\n\nA test suite is provided. It uses a separate config file to separate it from\nthe \"normal\" runtime.\n\n```\n$ cp config.yaml.example config.test.yaml\n```\n\nEdit the `config.test.yaml` to point to a different database, for best results.\n\nThen migrate the test database:\n\n```\n$ go run . -config config.test.yaml -migrate\n```\n\nAnd then you can run the test suite for everything:\n\n```\n$ go test ./...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblackieops%2Fnucleus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblackieops%2Fnucleus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblackieops%2Fnucleus/lists"}