{"id":13564002,"url":"https://github.com/kir-dev/warp-drive","last_synced_at":"2026-01-28T02:59:34.124Z","repository":{"id":15726096,"uuid":"18464335","full_name":"kir-dev/warp-drive","owner":"kir-dev","description":"Simple image-hosting","archived":false,"fork":false,"pushed_at":"2014-05-10T21:31:41.000Z","size":756,"stargazers_count":2,"open_issues_count":11,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-03T20:37:56.258Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/kir-dev.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}},"created_at":"2014-04-05T10:07:49.000Z","updated_at":"2021-11-21T20:08:37.000Z","dependencies_parsed_at":"2022-09-10T15:51:03.954Z","dependency_job_id":null,"html_url":"https://github.com/kir-dev/warp-drive","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kir-dev/warp-drive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kir-dev%2Fwarp-drive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kir-dev%2Fwarp-drive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kir-dev%2Fwarp-drive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kir-dev%2Fwarp-drive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kir-dev","download_url":"https://codeload.github.com/kir-dev/warp-drive/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kir-dev%2Fwarp-drive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28835669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T02:10:51.810Z","status":"ssl_error","status_checked_at":"2026-01-28T02:10:50.806Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-08-01T13:01:25.428Z","updated_at":"2026-01-28T02:59:34.098Z","avatar_url":"https://github.com/kir-dev.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# warp-drive\n\nWarp-drive is a self-hosted image hosting service. It was born out of the need\nto store images for [our blog](http://kir-dev.sch.bme.hu). Storing a lot of\nimages in a git repo is not a lot of fun.\n\n## Overview\n\nIt stores images in the file system, while metadata is in a database. We are\nusing postgres. There is a simple page for uploading and searching images. Every\nimage can be linked by its unique url and an optional width can be provided. If\na width is provided then the image will be resized and the aspect ratio will be\nkept. If the width is greater than the original with then the original size will\nbe used.\n\n## Main features\n\n* Upload and store images\n* Easily link to images\n\n    URL structure:\n\n        //example.com/\u003chash-of-image\u003e/[width]\n\n* Resize images on the fly\n* Search among the uploaded images\n\n## Install\n\n1. Download the [latest release](https://github.com/kir-dev/warp-drive/releases/latest).\n2. Extract the archive\n3. Create or upgrade the database\n    * for a clean install follow the instructions [here](#setting-up-the-database).\n    * for an upgrade use the `config/upgrade.sql` if any.\n4. start your application:\n\n        $ ./warp\n        # for more information on the command-line arguments\n        $ ./warp --help\n\nUsing it with a reverse HTTP proxy is probably the easiest way to provide SSL\nsupport. (Currently the application only support HTTP.)\n\n## Development\n\n### Prerequisites\n\n1. install the latest [PostgreSQL](http://www.postgresql.org/download/)\n2. install [go1.2+](http://golang.org/doc/install#download)\n\n### Setting up the database\n\nAssuming a running and functional postgresql server.\n\n    $ sudo su - postgres\n    $ createuser -l -E -P -R -S -D warp\n    $ createdb -O warp -E utf8 warp\n    $ psql -U warp -d warp -h localhost -f /path/to/warp/scripts/sql/schema.sql\n\n### Setting up your go environment\n\nAssuming you have go installed, create your workspace.\n\n    $ mkdir -p /path/to/your/workspace/src\n    $ export GOPATH=$GOPATH:/path/to/your/workspace\n\nThe src folder at the end is mandatory.\n\n### Get the code\n\n    $ cd /path/to/your/workspace/src\n    $ git clone https://github.com/kir-dev/warp-drive.git warp-drive\n\n### Setup your config file\n\n    $ cp config/config.json.dist config/config.json\n    $ vim config/config.json\n\nFor detailed information about the configuration look at the\n[configuration](#configuration) section.\n\n### Build \u0026 run\n\nWe are using [godep](https://github.com/tools/godep) for managing dependencies,\nso you must have `godep` installed in your `PATH`.\n\nTo build the bot itself just run\n\n    $ make\n\nIt creates a new executable named `warp`. To run it simply:\n\n    $ ./warp\n\nOpen http://localhost:8080 in your browser.\n\n### Modifying the database schema\n\nWhen modifying the database schema create a new `.sql` file in `scripts/sql`\ndirectory. The name should contain the date and the purpose of the modification.\nEg: `2014-04-09-created-users-table.sql`.\n\n**DO NOT** forget to add the the modifications to the `schema.sql` file as well.\nThe schema file should always contain the full schema for a clean install.\n\n## Configuration\n\nRename or create a copy of the `config.json.dist`. `config/config.json` is\nrecognized by default, use the `-config` option to provide an alternate config\nfile.\n\nCurrently the config file contains the following options:\n\n* `uploadPath`: base directory for image uploads\n* `serverAddress`: the host (including port if necessary)\n* `user`, `password`: the user name and password for uploading images\n* `db`: connection information for the database\n* `sessionSecret`: a random key for signing the session cookies\n* `clientId`: OAuth (auth.sch) client id\n* `clientSecret`: OAuth (auth.sch) client secret\n* `secure`: set it to true and session cookies are only transmitted via https\n* `groupId`: restric upload access to members of a specific group. Set it to `0` for no restriction.\n\n### OAuth configuration\n\nFor development register a new application at [auth.sch.bme.hu][3] and use the provided\ncredentials. For the redirect address give something like `http://localhost:8080/auth`.\n\n## Contributing\n\n1. Fork it.\n2. Create a branch (`git checkout -b my_awesome_path`)\n3. Commit your changes (`git commit -am \"Awesome stuff added\"`)\n4. Push to the branch (`git push origin my_awesome_path`)\n5. Open a [Pull Request][1]\n6. Enjoy a refreshing Diet Coke and wait\n\nWhen committing go code **always** use the `go fmt` tool first. Possibly one could\nset up a pre-commit git-hook to automate this.\n\nOr you can do it manually:\n\n    $ go fmt ./...\n    # or\n    $ make fmt\n\n## Adding a new dependency\n\nWe are using [godep](https://github.com/tools/godep) for managing dependencies,\nso you must have `godep` installed in your `PATH`.\n\nUse the [godep workflow](https://github.com/tools/godep#add-or-update-a-dependency)\nand use the `-copy=false` option on save.\n\n## Releasing\n\nFor versioning we try to follow the rules of [semver](http://semver.org/). This\nmeans that every release has a `MAJOR.MINOR.PATCH` versioning scheme.\n\n1. Create a new distribution archive\n\n        $ ./scripts/dist.sh MAJOR.MINOR.PATCH\n\n2. Tag the new release\n\n        $ git tag -a vMAJOR.MINOR.PATCH\n\n    In the tag message describe the new release briefly.\n\n3. Prepare a new [github release][2]. Describe the new release in detail and\nupload the distribution archive for the release.\n\n[1]: https://github.com/kir-dev/warp-drive/pulls\n[2]: https://github.com/blog/1547-release-your-software\n[3]: https://auth.sch.bme.hu/console/index\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkir-dev%2Fwarp-drive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkir-dev%2Fwarp-drive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkir-dev%2Fwarp-drive/lists"}