{"id":16677833,"url":"https://github.com/jaemk/transfer","last_synced_at":"2025-03-21T18:32:00.936Z","repository":{"id":33942221,"uuid":"103218497","full_name":"jaemk/transfer","owner":"jaemk","description":"Encrypted file transfer utility","archived":false,"fork":false,"pushed_at":"2022-12-07T07:49:50.000Z","size":10595,"stargazers_count":4,"open_issues_count":35,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T03:43:52.026Z","etag":null,"topics":["encryption","filetransfer","rust","secure","transfer","transfer-utility"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/jaemk.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2017-09-12T03:39:54.000Z","updated_at":"2022-08-16T18:41:07.000Z","dependencies_parsed_at":"2023-01-15T03:30:37.028Z","dependency_job_id":null,"html_url":"https://github.com/jaemk/transfer","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaemk%2Ftransfer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaemk%2Ftransfer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaemk%2Ftransfer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaemk%2Ftransfer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaemk","download_url":"https://codeload.github.com/jaemk/transfer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244848751,"owners_count":20520582,"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":["encryption","filetransfer","rust","secure","transfer","transfer-utility"],"created_at":"2024-10-12T13:27:37.988Z","updated_at":"2025-03-21T18:32:00.602Z","avatar_url":"https://github.com/jaemk.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transfer [![Build Status](https://travis-ci.org/jaemk/transfer.svg?branch=develop)](https://travis-ci.org/jaemk/transfer)\n\n\u003e Encrypted file transfer utility\n\nAlso see the command line client, [`transfer-cli`](https://github.com/jaemk/transfer-cli)\n\n\n## Development\n\n- Backend:\n    - Install [`rust`](https://www.rust-lang.org/en-US/install.html)\n    - Install `postgres`: `apt install postgresql libpq-dev`\n    - Install [`migrant`](https://github.com/jaemk/migrant) (migration manager):\n        - `cargo install migrant --features postgresql`\n    - Initialize database (postgres):\n        - `migrant init`\n        - `migrant setup`\n        - `migrant apply --all`\n    - Build and run backend dev server:\n        - `cargo run -- serve --port 3002`\n        - Configuration can be tweaked in `config.ron`\n    - Poke around in the database: `migrant shell`\n- Frontend (inside `/web`):\n    - Install [`npm`](https://www.npmjs.com/get-npm)\n    - Install [`yarn`](https://yarnpkg.com/en/docs/install)\n    - Build a run frontend dev server\n        - `yarn install`\n        - `yarn start`\n        - Open `http://localhost:3000`\n        - Api requests are proxied to the backend: `localhost:3002`\n\n\n## Release Builds\n\nPackaged releases are built and packaged by travis-ci. Complete packaged releases are available [here](https://github.com/jaemk/transfer/releases)\n\n- Backend (`Rust` setup for cross-compilation)\n    - Install [`docker`](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04)\n        - Add yourself to the `docker` group: `sudo usermod -a -G docker \u003cuser\u003e`\n        - Restart to pick up changes (logging in \u0026 out may suffice)\n        - You should be able to run `docker version` without any errors\n        - May need to start the Docker daemon if it's not already running: `sudo systemctl start docker` (not sure about windows/os-x)\n    - Install [`cross`](https://github.com/japaric/cross): `cargo install cross`\n    - Build server executables for targets listed in `build.py` script (currently only `x86_64`):\n        - `build.py server`\n- Frontend (`React`)\n    - Build frontend app bundles and copy to their static-file locations\n        - `build.py web`\n\n\n## Deployment / Running Packaged Releases\n\n\u003e `postgres` \u0026 `nginx` are required\n\n- **Initial Setup**\n    - Create and enter a project directory where versioned packages can be managed:\n      ```bash\n      mkdir transfer\n      cd transfer\n      ```\n    - Download, unpackage, and do initial setup for the latest release\n      (see [releases](https://github.com/jaemk/transfer/releases))\n       ```bash\n       # download\n       curl -LO https://github.com/jaemk/transfer/releases/download/$TAG/transfer-$TAG-$TARGET.tar.gz\n       # extract\n       tar -xf transfer-$TAG-$TARGET.tar.gz\n       # rename\n       mv transfer $TAG\n       # setup \"latest\" symlink\n       ln -sfn $TAG latest\n       ```\n    - Setup an uploads directory where transfer uploads can exist between application code updates.\n      Make sure your `config.ron` file is updated and copied to the config directory.\n      ```bash\n      mkdir transfer_uploads\n      vim latest/config.ron  # update \"upload_directory\" to \"/\u003cABS_PATH_TO\u003e/transfer/transfer_uploads\"\n      # and copy to the config directory\n      cp latest/config.ron `latest/bin/transfer admin config-dir`\n      ```\n    - Setup the database\n      ```bash\n      latest/bin/transfer admin database setup\n      # Run suggested commands to create database if it doesn't exist\n      # and then try settinng up migrations again\n      latest/bin/transfer admin database setup\n      ```\n    - Apply migrations\n      ```bash\n      latest/bin/transfer admin database migrate\n      ```\n    - Poke around the database\n      ```bash\n      latest/bin/transfer admin database shell\n      ```\n    - Setup nginx\n      ```bash\n      # copy sample config and then update its details with your environment info\n      sudo cp nginx.conf.sample /etc/nginx/sites-available/transfer\n      # check config\n      sudo nginx -t\n      # enable site\n      sudo ln -s /etc/nginx/sites-available/transfer /etc/nginx/sites-enabled/transfer\n      sudo systemctl restart nginx\n      ```\n    - Setup systemd service\n      ```bash\n      # copy sample config and then update its details with your environment info\n      sudo cp transfer.service.sample /lib/systemd/system/transfer.service\n      # enable the service\n      sudo systemctl daemon-reload\n      sudo systemctl enable transfer.service\n      # start!\n      sudo systemctl restart transfer\n      # tail the log\n      sudo journalctl -fu transfer\n      ```\n- **Updates**\n    - Assuming you followed the \"Initial Setup\" section\n    - Use the `release.py` script to fetch, unpackage, and symlink the latest release\n      ```bash\n      # from the `transfer` project root\n      # follow prompts to download the appropriate target and replace the `latest` symlink\n      latest/release.py fetch\n      ```\n    - Apply migrations and restart the app\n      ```bash\n      latest/bin/transfer admin database migrate\n      sudo systemctl restart transfer\n      ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaemk%2Ftransfer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaemk%2Ftransfer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaemk%2Ftransfer/lists"}