From cb0d23fd52a2f75080e0cabee1b49b9f587f7699 Mon Sep 17 00:00:00 2001 From: Nico <47644445+nicotsx@users.noreply.github.com> Date: Thu, 20 Nov 2025 18:59:57 +0100 Subject: [PATCH] refactor: rebrand to zerobyte (#45) --- .github/workflows/release.yml | 6 +- CONTRIBUTING.md | 24 ++-- README.md | 112 +++++++++--------- app/client/components/app-sidebar.tsx | 12 +- app/client/components/auth-layout.tsx | 5 +- .../components/create-repository-form.tsx | 12 +- app/client/components/layout.tsx | 2 +- .../auth/routes/download-recovery-key.tsx | 2 +- app/client/modules/auth/routes/login.tsx | 4 +- app/client/modules/auth/routes/onboarding.tsx | 6 +- .../modules/backups/routes/backup-details.tsx | 2 +- app/client/modules/backups/routes/backups.tsx | 2 +- .../modules/backups/routes/create-backup.tsx | 2 +- .../repositories/routes/create-repository.tsx | 2 +- .../repositories/routes/repositories.tsx | 2 +- .../routes/repository-details.tsx | 2 +- .../repositories/routes/snapshot-details.tsx | 2 +- .../modules/settings/routes/settings.tsx | 2 +- .../modules/volumes/routes/create-volume.tsx | 2 +- .../modules/volumes/routes/volume-details.tsx | 2 +- app/client/modules/volumes/routes/volumes.tsx | 2 +- app/root.tsx | 2 +- app/server/core/constants.ts | 10 +- app/server/index.ts | 6 +- app/server/jobs/cleanup-dangling.ts | 6 +- .../modules/driver/driver.controller.ts | 10 +- app/server/modules/volumes/volume.service.ts | 2 +- app/server/utils/restic.ts | 6 +- docker-compose.yml | 14 +-- drizzle.config.ts | 2 +- mutagen.yml | 4 +- package.json | 6 +- public/images/favicon/site.webmanifest | 4 +- public/images/zerobyte.png | Bin 0 -> 8273 bytes 34 files changed, 141 insertions(+), 138 deletions(-) create mode 100644 public/images/zerobyte.png diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index de29e55..16e8d9a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,7 +54,7 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/ironmount + images: ghcr.io/${{ github.repository_owner }}/zerobyte tags: | type=semver,pattern={{version}},prefix=v type=semver,pattern={{major}},prefix=v,enable=${{ needs.determine-release-type.outputs.release_type == 'release' }} @@ -62,8 +62,8 @@ jobs: type=semver,pattern={{major}}.{{minor}}.{{patch}},prefix=v,enable=${{ needs.determine-release-type.outputs.release_type == 'release' }} flavor: | latest=${{ needs.determine-release-type.outputs.release_type == 'release' }} - cache-from: type=registry,ref=ghcr.io/nicotsx/ironmount:buildcache - cache-to: type=registry,ref=ghcr.io/nicotsx/ironmount:buildcache,mode=max + cache-from: type=registry,ref=ghcr.io/nicotsx/zerobyte:buildcache + cache-to: type=registry,ref=ghcr.io/nicotsx/zerobyte:buildcache,mode=max - name: Build and push images uses: docker/build-push-action@v6 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ba4091f..29b746a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to Ironmount +# Contributing to Zerobyte -Thank you for your interest in contributing to Ironmount! We welcome contributions from the community and are grateful for your support in making this project better. +Thank you for your interest in contributing to Zerobyte! We welcome contributions from the community and are grateful for your support in making this project better. ## Table of Contents @@ -16,7 +16,7 @@ Thank you for your interest in contributing to Ironmount! We welcome contributio Before you begin: -1. Check the [issues](https://github.com/nicotsx/ironmount/issues) to see if someone is already working on what you have in mind +1. Check the [issues](https://github.com/nicotsx/zerobyte/issues) to see if someone is already working on what you have in mind 2. For major changes, please open an issue first to discuss what you would like to change 3. Make sure you have read and agreed to our Contributor License Agreement (CLA) @@ -30,7 +30,7 @@ A Contributor License Agreement (CLA) is a legal document in which you state you We require a CLA for several important reasons: -1. **License Flexibility**: It allows the project to evolve its licensing model if needed in the future without requiring re-approval from all past contributors, ensuring Ironmount can continue to operate and adapt to changing needs of the community. +1. **License Flexibility**: It allows the project to evolve its licensing model if needed in the future without requiring re-approval from all past contributors, ensuring Zerobyte can continue to operate and adapt to changing needs of the community. 2. **Patent Protection**: The CLA includes a patent license grant, which protects the project and its users from potential patent claims related to your contributions. @@ -45,7 +45,7 @@ When you submit your first pull request, our CLA Assistant will automatically pr 3. Follow the link provided to review and sign the CLA electronically 4. Once signed, the bot will update your PR status -You only need to sign the CLA once, and it will cover all your future contributions to Ironmount. +You only need to sign the CLA once, and it will cover all your future contributions to Zerobyte. ### Key Points of Our CLA @@ -55,11 +55,11 @@ You only need to sign the CLA once, and it will cover all your future contributi - You're not required to provide support for your contributions - The CLA does not guarantee that your contribution will be accepted or kept into the project -For the complete CLA text, please see the [CLA document](https://cla-assistant.io/nicotsx/ironmount). +For the complete CLA text, please see the [CLA document](https://cla-assistant.io/nicotsx/zerobyte). ## How to Contribute -There are many ways to contribute to Ironmount: +There are many ways to contribute to Zerobyte: ### Reporting Bugs @@ -67,7 +67,7 @@ If you find a bug, please open an issue with: - A clear, descriptive title - Steps to reproduce the issue - Expected vs. actual behavior -- Your environment (OS, Docker version, Ironmount version) +- Your environment (OS, Docker version, Zerobyte version) - Any relevant logs or screenshots ### Suggesting Features @@ -97,14 +97,14 @@ Documentation improvements are always welcome! This includes: ### Translations -We welcome translations to make Ironmount accessible to more users worldwide. Please open an issue to discuss translation efforts before starting. +We welcome translations to make Zerobyte accessible to more users worldwide. Please open an issue to discuss translation efforts before starting. ## Development Setup 1. **Clone your fork**: ```bash - git clone https://github.com/your-username/ironmount.git - cd ironmount + git clone https://github.com/your-username/zerobyte.git + cd zerobyte ``` 2. **Set up your development environment**: @@ -164,4 +164,4 @@ If you have questions about contributing, feel free to: --- -Thank you for contributing to Ironmount! +Thank you for contributing to Zerobyte! diff --git a/README.md b/README.md index 50afdf2..fdf7faa 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@
-

Ironmount

+

Zerobyte

Powerful backup automation for your remote storage
Encrypt, compress, and protect your data with ease

- - + +
- Demo + Demo

Backup management with scheduling and monitoring @@ -16,11 +16,11 @@

> [!WARNING] -> Ironmount is still in version 0.x.x and is subject to major changes from version to version. I am developing the core features and collecting feedbacks. Expect bugs! Please open issues or feature requests +> Zerobyte is still in version 0.x.x and is subject to major changes from version to version. I am developing the core features and collecting feedbacks. Expect bugs! Please open issues or feature requests ## Intro -Ironmount is a backup automation tool that helps you save your data across multiple storage backends. Built on top of Restic, it provides an modern web interface to schedule, manage, and monitor encrypted backups of your remote storage. +Zerobyte is a backup automation tool that helps you save your data across multiple storage backends. Built on top of Restic, it provides an modern web interface to schedule, manage, and monitor encrypted backups of your remote storage. ### Features @@ -31,13 +31,13 @@ Ironmount is a backup automation tool that helps you save your data across multi ## Installation -In order to run Ironmount, you need to have Docker and Docker Compose installed on your server. Then, you can use the provided `docker-compose.yml` file to start the application. +In order to run Zerobyte, you need to have Docker and Docker Compose installed on your server. Then, you can use the provided `docker-compose.yml` file to start the application. ```yaml services: - ironmount: - image: ghcr.io/nicotsx/ironmount:v0.10 - container_name: ironmount + zerobyte: + image: ghcr.io/nicotsx/zerobyte:v0.10 + container_name: zerobyte restart: unless-stopped cap_add: - SYS_ADMIN @@ -47,13 +47,13 @@ services: - /dev/fuse:/dev/fuse volumes: - /etc/localtime:/etc/localtime:ro - - /var/lib/ironmount:/var/lib/ironmount + - /var/lib/zerobyte:/var/lib/zerobyte ``` > [!WARNING] -> Do not try to change the location of the bind mount `/var/lib/ironmount` on your host or store it on a network share. You will likely face permission issues and strong performance degradation. +> Do not try to change the location of the bind mount `/var/lib/zerobyte` on your host or store it on a network share. You will likely face permission issues and strong performance degradation. -Then, run the following command to start Ironmount: +Then, run the following command to start Zerobyte: ```bash docker compose up -d @@ -63,17 +63,17 @@ Once the container is running, you can access the web interface at `http://` +- **Local directories** - Store backups on local disk at `/var/lib/zerobyte/repositories/` - **S3-compatible storage** - Amazon S3, MinIO, Wasabi, DigitalOcean Spaces, etc. - **Google Cloud Storage** - Google's cloud storage service - **Azure Blob Storage** - Microsoft Azure storage @@ -114,7 +114,7 @@ To create a repository, navigate to the "Repositories" section in the web interf ### Using rclone for cloud storage -Ironmount can use [rclone](https://rclone.org/) to support 40+ cloud storage providers including Google Drive, Dropbox, OneDrive, Box, pCloud, Mega, and many more. This gives you the flexibility to store your backups on virtually any cloud storage service. +Zerobyte can use [rclone](https://rclone.org/) to support 40+ cloud storage providers including Google Drive, Dropbox, OneDrive, Box, pCloud, Mega, and many more. This gives you the flexibility to store your backups on virtually any cloud storage service. **Setup instructions:** @@ -134,12 +134,12 @@ Ironmount can use [rclone](https://rclone.org/) to support 40+ cloud storage pro rclone listremotes ``` -4. **Mount the rclone config into the Ironmount container** by updating your `docker-compose.yml`: +4. **Mount the rclone config into the Zerobyte container** by updating your `docker-compose.yml`: ```diff services: - ironmount: - image: ghcr.io/nicotsx/ironmount:v0.10 - container_name: ironmount + zerobyte: + image: ghcr.io/nicotsx/zerobyte:v0.10 + container_name: zerobyte restart: unless-stopped cap_add: - SYS_ADMIN @@ -149,20 +149,20 @@ Ironmount can use [rclone](https://rclone.org/) to support 40+ cloud storage pro - /dev/fuse:/dev/fuse volumes: - /etc/localtime:/etc/localtime:ro - - /var/lib/ironmount:/var/lib/ironmount + - /var/lib/zerobyte:/var/lib/zerobyte + - ~/.config/rclone:/root/.config/rclone ``` -5. **Restart the Ironmount container**: +5. **Restart the Zerobyte container**: ```bash docker compose down docker compose up -d ``` -6. **Create a repository** in Ironmount: +6. **Create a repository** in Zerobyte: - Select "rclone" as the repository type - Choose your configured remote from the dropdown - - Specify the path within your remote (e.g., `backups/ironmount`) + - Specify the path within your remote (e.g., `backups/zerobyte`) For a complete list of supported providers, see the [rclone documentation](https://rclone.org/). @@ -175,28 +175,28 @@ When creating a backup job, you can specify the following settings: - **Retention Policy**: Set rules for how long backups should be retained (e.g., keep daily backups for 7 days, weekly backups for 4 weeks) - **Paths**: Specify which files or directories to include in the backup -After configuring the backup job, save it and Ironmount will automatically execute the backup according to the defined schedule. +After configuring the backup job, save it and Zerobyte will automatically execute the backup according to the defined schedule. You can monitor the progress and status of your backup jobs in the "Backups" section of the web interface. -![Preview](https://github.com/nicotsx/ironmount/blob/main/screenshots/backups-list.png?raw=true) +![Preview](https://github.com/nicotsx/zerobyte/blob/main/screenshots/backups-list.png?raw=true) ## Restoring data -Ironmount allows you to easily restore your data from backups. To restore data, navigate to the "Backups" section and select the backup job from which you want to restore data. You can then choose a specific backup snapshot and select the files or directories you wish to restore. The data you select will be restored to their original location. +Zerobyte allows you to easily restore your data from backups. To restore data, navigate to the "Backups" section and select the backup job from which you want to restore data. You can then choose a specific backup snapshot and select the files or directories you wish to restore. The data you select will be restored to their original location. -![Preview](https://github.com/nicotsx/ironmount/blob/main/screenshots/restoring.png?raw=true) +![Preview](https://github.com/nicotsx/zerobyte/blob/main/screenshots/restoring.png?raw=true) ## Propagating mounts to host -Ironmount is capable of propagating mounted volumes from within the container to the host system. This is particularly useful when you want to access the mounted data directly from the host to use it with other applications or services. +Zerobyte is capable of propagating mounted volumes from within the container to the host system. This is particularly useful when you want to access the mounted data directly from the host to use it with other applications or services. -In order to enable this feature, you need to change your bind mount `/var/lib/ironmount` to use the `:rshared` flag. Here is an example of how to set this up in your `docker-compose.yml` file: +In order to enable this feature, you need to change your bind mount `/var/lib/zerobyte` to use the `:rshared` flag. Here is an example of how to set this up in your `docker-compose.yml` file: ```diff services: - ironmount: - image: ghcr.io/nicotsx/ironmount:v0.10 - container_name: ironmount + zerobyte: + image: ghcr.io/nicotsx/zerobyte:v0.10 + container_name: zerobyte restart: unless-stopped ports: - "4096:4096" @@ -204,11 +204,11 @@ services: - /dev/fuse:/dev/fuse volumes: - /etc/localtime:/etc/localtime:ro -- - /var/lib/ironmount:/var/lib/ironmount -+ - /var/lib/ironmount:/var/lib/ironmount:rshared +- - /var/lib/zerobyte:/var/lib/zerobyte ++ - /var/lib/zerobyte:/var/lib/zerobyte:rshared ``` -Restart the Ironmount container to apply the changes: +Restart the Zerobyte container to apply the changes: ```bash docker compose down @@ -217,15 +217,15 @@ docker compose up -d ## Docker plugin -Ironmount can also be used as a Docker volume plugin, allowing you to mount your volumes directly into other Docker containers. This enables seamless integration with your containerized applications. +Zerobyte can also be used as a Docker volume plugin, allowing you to mount your volumes directly into other Docker containers. This enables seamless integration with your containerized applications. -In order to enable this feature, you need to run Ironmount with several items shared from the host. Here is an example of how to set this up in your `docker-compose.yml` file: +In order to enable this feature, you need to run Zerobyte with several items shared from the host. Here is an example of how to set this up in your `docker-compose.yml` file: ```diff services: - ironmount: - image: ghcr.io/nicotsx/ironmount:v0.10 - container_name: ironmount + zerobyte: + image: ghcr.io/nicotsx/zerobyte:v0.10 + container_name: zerobyte restart: unless-stopped cap_add: - SYS_ADMIN @@ -235,20 +235,20 @@ services: - /dev/fuse:/dev/fuse volumes: - /etc/localtime:/etc/localtime:ro -- - /var/lib/ironmount:/var/lib/ironmount -+ - /var/lib/ironmount:/var/lib/ironmount:rshared +- - /var/lib/zerobyte:/var/lib/zerobyte ++ - /var/lib/zerobyte:/var/lib/zerobyte:rshared + - /run/docker/plugins:/run/docker/plugins + - /var/run/docker.sock:/var/run/docker.sock ``` -Restart the Ironmount container to apply the changes: +Restart the Zerobyte container to apply the changes: ```bash docker compose down docker compose up -d ``` -Your Ironmount volumes will now be available as Docker volumes that you can mount into other containers using the `--volume` flag: +Your Zerobyte volumes will now be available as Docker volumes that you can mount into other containers using the `--volume` flag: ```bash docker run -v im-nfs:/path/in/container nginx:latest @@ -267,7 +267,7 @@ volumes: external: true ``` -The volume name format is `im-` where `` is the name you assigned to the volume in Ironmount. You can verify that the volume is available by running: +The volume name format is `im-` where `` is the name you assigned to the volume in Zerobyte. You can verify that the volume is available by running: ```bash docker volume ls @@ -279,7 +279,7 @@ This project includes the following third-party software components: ### Restic -Ironmount includes [Restic](https://github.com/restic/restic) for backup functionality. +Zerobyte includes [Restic](https://github.com/restic/restic) for backup functionality. - **License**: BSD 2-Clause License - **Copyright**: Copyright (c) 2014, Alexander Neumann diff --git a/app/client/components/app-sidebar.tsx b/app/client/components/app-sidebar.tsx index 19ef854..8710b68 100644 --- a/app/client/components/app-sidebar.tsx +++ b/app/client/components/app-sidebar.tsx @@ -1,4 +1,4 @@ -import { CalendarClock, Database, HardDrive, Mountain, Settings } from "lucide-react"; +import { CalendarClock, Database, HardDrive, Settings } from "lucide-react"; import { Link, NavLink } from "react-router"; import { Sidebar, @@ -46,13 +46,17 @@ export function AppSidebar() { - + Zerobyte Logo - Ironmount + Zerobyte diff --git a/app/client/components/auth-layout.tsx b/app/client/components/auth-layout.tsx index 2435a41..87c5b7e 100644 --- a/app/client/components/auth-layout.tsx +++ b/app/client/components/auth-layout.tsx @@ -1,4 +1,3 @@ -import { Mountain } from "lucide-react"; import type { ReactNode } from "react"; type AuthLayoutProps = { @@ -13,8 +12,8 @@ export function AuthLayout({ title, description, children }: AuthLayoutProps) {
- - Ironmount + Zerobyte Logo + Zerobyte
diff --git a/app/client/components/create-repository-form.tsx b/app/client/components/create-repository-form.tsx index 51ba64a..4c511e3 100644 --- a/app/client/components/create-repository-form.tsx +++ b/app/client/components/create-repository-form.tsx @@ -229,12 +229,12 @@ export const CreateRepositoryForm = ({ - Use Ironmount's password + Use Zerobyte's password Enter password manually - Choose whether to use Ironmount's master password or enter a custom password for the existing + Choose whether to use Zerobyte's master password or enter a custom password for the existing repository. @@ -266,7 +266,7 @@ export const CreateRepositoryForm = ({ Repository Directory
- {form.watch("path") || "/var/lib/ironmount/repositories"} + {form.watch("path") || "/var/lib/zerobyte/repositories"}