{"id":17132588,"url":"https://github.com/alphapeter/filecommander","last_synced_at":"2026-02-24T07:03:59.801Z","repository":{"id":148546013,"uuid":"83084827","full_name":"alphapeter/filecommander","owner":"alphapeter","description":"A web filecommander inspired by cloudcommander http://cloudcmd.io/. Built with portability and easy deployment in mind which requires just a single binary and a configuration file. It will build on any platform supported by go (windows, linux, macos) on different architectures. Precompiled binaries for windows, linux and mac are available.","archived":false,"fork":false,"pushed_at":"2018-07-29T18:11:06.000Z","size":353,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-25T06:37:56.641Z","etag":null,"topics":["commander","copy","delete","filecommander","filesystem","golang","move","web","webpack"],"latest_commit_sha":null,"homepage":"","language":"Vue","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/alphapeter.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":"2017-02-24T21:36:52.000Z","updated_at":"2018-07-29T18:09:32.000Z","dependencies_parsed_at":"2023-06-25T21:08:23.608Z","dependency_job_id":null,"html_url":"https://github.com/alphapeter/filecommander","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphapeter%2Ffilecommander","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphapeter%2Ffilecommander/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphapeter%2Ffilecommander/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphapeter%2Ffilecommander/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alphapeter","download_url":"https://codeload.github.com/alphapeter/filecommander/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247427012,"owners_count":20937214,"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":["commander","copy","delete","filecommander","filesystem","golang","move","web","webpack"],"created_at":"2024-10-14T19:27:32.351Z","updated_at":"2025-10-28T15:32:16.638Z","avatar_url":"https://github.com/alphapeter.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# file commander\n \n`Copy`, `move`, `delete` and `rename` files on your server from your web browser.  \n* Easy, single binary installation\n* Multiple platforms (Windows, Linux, OSX)\n* Predefined folder access only\n* Files cannot be uploaded nor downloaded\n \n![Image of Yaktocat](screenshot.png)\n# About\nA simple, portable web file commander implemented in the Go language. \nIt compiles into one single binary which bundles all HTML, javascript etc. \nThe protocol for the API is JSON RPC 2.0 through HTTP posts.\nYou can define virtual file system roots to make certain parts of the file system accessible.  \n\n# Download\nhttps://github.com/alphapeter/filecommander/releases\n\n# Compatibility\nThe front end will only run on modern browsers, such as chrome, firefox, opera or edge, **internet explorer will not work**\n# Dependencies\nThe only dependency required to build the application is the go framework https://golang.org/\n\n# Building the application\n 1. Install, (if not already installed), the go framework https://golang.org/dl/\n 2. run `go build` in the source directory\n 3. (optional) rename the main binary to filecommander (or main.exe to filecommander if on windows)\n\n# Configuration\nBefore you can utilize the file commander, you have to define your (virtual) file system roots.\nexample of `settings.json`\n ```\n {\n   \"roots\": [\n     {\n       \"name\": \"temp\",\n       \"path\": \"/tmp\"\n     },\n     {\n       \"name\": \"incoming\",\n       \"path\": \"/var/incoming\"\n     }\n   ],\n   \"binding\": \"0.0.0.0:8080\"\n }\n \n```\n\nexample of `settings.json` for windows\n ```\n {\n   \"roots\": [\n     {\n       \"name\": \"temp\",\n       \"path\": \"c:/temp\"\n     },\n     {\n       \"name\": \"incoming\",\n       \"path\": \"c:/incoming\"\n     }\n   ],\n   \"binding\": \"0.0.0.0:8080\"\n }\n \n```\n\nif binding is specified as  `0.0.0.0:8080` it will listen to all addresses  \nif binding is specified as `192.168.0.100:80` it will listen to 192.168.0.100 at port 80\n\n**file location**  \n* the default search path is './settings.json'  \n* to load settings file from another location, use the argument `--settings \u003cpath-to-settings\u003e/\u003cfilename\u003e.json` when starting the application  \n\n# Protocol\n\n## JSON RPC 2.0\nFor complete specification of the JSON RPC protocol, please visit http://www.jsonrpc.org/specification\n\n## Copy (cp)\nCopy a file to an other file\n\nExample of command:\n```\n{\n  \"jsonrpc\":\"2.0\",\n  \"method\": \"cp\",\n  \"params\": [\"private/animals/cat.jpg\", \"public/animals/cat.jpg\"],\n  \"id\": \"3\"\n}\n```\nExample of successful response:\n```\n{\n    \"jsonrpc\":\"2.0\",\n    \"result\":null,\n    \"id\":\"3\"\n}\n```\nExample of unsuccessful response:\n```\n{\n    \"jsonrpc\":\"2.0\",\n    \"id\":\"3\",\n    \"error\":\n    {\n        \"code\":-32603,\n        \"message\":\"open /temp/animals/cat.jpg: The system cannot find the file specified.\"\n    }\n}\n```\n\n## List roots (df)\nLists available (virtual) file system roots by name  \n\nExample of command:\n```\n{ \n  \"jsonrpc\":\"2.0\",\n  \"method\": \"df\",\n  \"params\": [],\n  \"id\": \"3\"\n}\n```\nExample of successful response:\n```\n{\n    \"jsonrpc\":\"2.0\",\n    \"result\":[\"incoming\",\"temp\"],\n    \"id\":\"3\"\n}\n```\n## List files (ls)\nLists all files and directories for a certain path\n\nExample of command:\n```\n{\n  \"jsonrpc\":\"2.0\",\n  \"method\": \"ls\",\n  \"params\": [\"incoming/public\"],\n  \"id\": \"3\"\n}\n```\nExample of successful response:\nNote: Type d: Directory, Type f: File\n```\n{\n    \"jsonrpc\":\"2.0\",\n    \"result\":[{\"Type\":\"d\",\"Name\":\"dir1\"},{\"Type\":\"f\",\"Name\":\"file1.txt\"},{\"Type\":\"f\",\"Name\":\"file2.txt\"}]\n}\n```\n## Make directory (mkdir)\nCreates a directory\n\nExample of command:\n```\n{\n  \"jsonrpc\":\"2.0\",\n  \"method\": \"mkdir\",\n  \"params\": [\"incoming/animals\", \"cats\"],\n  \"id\": \"3\"\n}\n```\nExample of successful response:\n```\n{\n    \"jsonrpc\":\"2.0\",\n    \"result\":null,\n    \"id\":\"3\"\n}\n```\n## Move (mv)\nMoves/renames a file or directory\nNote. A file cannot be moved between two phycically different drives\n\nExample of command:\n```\n{\n  \"jsonrpc\":\"2.0\",\n  \"method\": \"mv\",\n  \"params\": [\"incoming/public/dog.jpg\", \"public/animals/dog.jpg\"],\n  \"id\": \"3\"\n}\n```\nExample of successful response:\n```\n{\n    \"jsonrpc\":\"2.0\",\n    \"result\":null,\n    \"id\":\"3\"\n}\n```\n## Delete (rm)\nDeletes a file  \n\nExample of command:\n```\n{ \n  \"jsonrpc\":\"2.0\",\n  \"method\": \"rm\",\n  \"params\": [\"incoming/public/dog.jpg\"],\n  \"id\": \"3\"\n}\n```\nExample of successful response:\n```\n{\n    \"jsonrpc\":\"2.0\",\n    \"result\":null,\n    \"id\":\"3\"\n}\n```\n\n# Rebuild the front-end\n\n## Preparations\n 1. Download and install nodejs from https://nodejs.org (go for the LTS release if you are unsure which version to choose)\n 2. Install webpack `npm install webpack -g`\n 3. Install webpack development server `npm install webpack-dev-server -g`\n 4. Install the additional dependencies run `npm install` in the frontend directory\n\n## Developement\nThe front end is written using vue.js, vuex and webpack. There's no need to recompile the backend during development. \nThe webpack development server will proxy the api calls to the backend once it is started.  \n  \n\n 1. Compile and start the backend application, let it listen to port 8080\n 2. Start webpack-dev-server run `npm run dev` in the frontend directory\n 3. browse to `localhost:8080` with your favourite browser\n 4. _make your changes to the code_ and it will update in the browser as you save\n 5. press `ctrl + c` to stop the dev server  \n\n## Compile the front end code\n * Run `npm run build` to run webpack en embed the content into go\n * Compile the go source with the updated front end code\n \n# Work in progress (whats next)\n **TODO**\n * implement key navigation\n * implement demo \n * make precompile binaries available\n * code cleanup\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falphapeter%2Ffilecommander","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falphapeter%2Ffilecommander","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falphapeter%2Ffilecommander/lists"}