{"id":48718500,"url":"https://github.com/caramelfur/picsur","last_synced_at":"2026-04-11T18:35:30.313Z","repository":{"id":38386509,"uuid":"462051277","full_name":"CaramelFur/Picsur","owner":"CaramelFur","description":"An easy to use, selfhostable image sharing service like Imgur with built in converting","archived":false,"fork":false,"pushed_at":"2025-10-12T16:03:45.000Z","size":6322,"stargazers_count":1218,"open_issues_count":36,"forks_count":67,"subscribers_count":10,"default_branch":"master","last_synced_at":"2026-04-11T18:34:57.758Z","etag":null,"topics":["docker","image","imgur","nodejs","picsur","postgresql","self-hosted","sharing","upload"],"latest_commit_sha":null,"homepage":"https://picsur.org/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CaramelFur.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"support/actual-update.sh","governance":null,"roadmap":null,"authors":null},"funding":{"github":"caramelfur"}},"created_at":"2022-02-21T22:24:47.000Z","updated_at":"2026-04-11T11:41:31.000Z","dependencies_parsed_at":"2023-02-18T14:45:48.162Z","dependency_job_id":"433f433e-5227-4b93-b500-8475a5a01b60","html_url":"https://github.com/CaramelFur/Picsur","commit_stats":{"total_commits":390,"total_committers":3,"mean_commits":130.0,"dds":0.0692307692307692,"last_synced_commit":"b9de0d2e56523d529102841bd3c3e74d6121de2f"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/CaramelFur/Picsur","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaramelFur%2FPicsur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaramelFur%2FPicsur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaramelFur%2FPicsur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaramelFur%2FPicsur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CaramelFur","download_url":"https://codeload.github.com/CaramelFur/Picsur/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaramelFur%2FPicsur/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31691503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["docker","image","imgur","nodejs","picsur","postgresql","self-hosted","sharing","upload"],"created_at":"2026-04-11T18:35:29.605Z","updated_at":"2026-04-11T18:35:30.296Z","avatar_url":"https://github.com/CaramelFur.png","language":"TypeScript","funding_links":["https://github.com/sponsors/caramelfur"],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"left\" width=\"100\" height=\"100\" style=\"border-radius: 15%\" src=\"branding/logo/picsur.svg\"/\u003e\n\n\u003ca  href=\"https://discord.gg/GPZNwV3VKE\"\u003e\n\u003cimg align=\"right\" style=\"margin: 5px\" src=\"https://img.shields.io/discord/986634827337965638?color=454FBF\u0026label=Chat%20on%20Discord\"/\u003e\n\u003c/a\u003e\n\n# Picsur\n\n\u003e Totally not an Imgur clone\n\n**NOT MAINTAINED, see the [FAQ](#faq)**\n\nI couldn't really find any open source project that allowed you to easily host images. So I decided to create one.\n\nIt feels like a hybrid between Imgur and Pastebin.\n\n## Beta\n\nRight now this software is still in beta, and many things are still missing, or will be changed in the future.\nBut it does function, so feel free to give it a try.\n\n## Demo\n\nYou can view a live demo here: \u003chttps://picsur.org/\u003e\n\nThe images are deleted every five minutes, and the maximum filesize is 16MB. But it should give you an indication of how it works.\n\n## Features\n\nHere is a list of done features, and what is planned.\nFor a more detailed list, you can always visit [the project](https://github.com/CaramelFur/Picsur/projects/1).\n\nEvery featured marked here should work in the latest release.\n\n- [x] Uploading and viewing images\n- [x] Anonymous uploads\n- [x] User accounts\n- [x] User roles and permissions\n- [x] Proper CORS restrictions\n- [x] Exif stripping\n- [x] Ability to keep original\n- [x] Support for many formats\n  - QOI\n  - JPG\n  - PNG\n  - WEBP (animated supported)\n  - TIFF\n  - HEIF\n  - BMP\n  - GIF (animated supported)\n  - JPG-XL\n  - JPG-2000\n- [x] Convert images\n- [x] Edit images\n  - Resize\n  - Rotate\n  - Flip\n  - Strip transparency\n  - Negative\n  - Greyscale\n- [x] Deletable images\n- [x] Proper DB migrations\n- [x] Show own images in list\n- [x] Correct previews on chats\n- [x] Expiring images\n- [x] ShareX endpoint\n- [x] ARM64 and AMD64 Docker image\n\n- [ ] White mode\n- [ ] Public gallery\n- [ ] Albums\n\n## Bugs\n\nIf you encounter any bugs or oddities, please open an issue [here](https://github.com/CaramelFur/Picsur/issues). Cause without feedback I'll never know they exists.\n\n## Star\n\nIf you like this project, don't forget to give it a star. It tells me that I'm not wasting my time on something that people don't like.\n\n## Faq\n\n### Is this project maintained?\n\nNope, not anymore, I simply haven't got the time or energy. It really is suprising how little quickly time passes once ya start a normal job. \n\nFeel free to fork it and continue where I left off. And if anyone wants to take full ownership of the project, also fork it and show some love for it, then hmu after.\n\nMaybe I'll find some random time in the future and continue on with this project, but we'll see.\n\n### Why do my images dissapear of the public instance?\n\nThe public instance is only a demo, and therefore only keeps images for 5 minutes. This is to prevent the server from running out of disk space, and to prevent people from using it to host questionable images.\n\nIf you wish to keep your images, you will have to host your own instance.\n\n### How do I allow users to register their own accounts?\n\nBy default, users can't register their own accounts. This is to prevent users from accidentally allowing anyone to upload to their instance.\n\nIf you want to allow this you can though. To change this you go to `settings -\u003e roles -\u003e guest -\u003e edit`, and then give the guest role the `Register` permission. Upon saving the role, the register button will appear on the login page.\n\n### I want to keep my original image files, how?\n\nBy default, Picsur will not keep your original image files. Since for most purposes this is not needed, and it saves disk space.\n\nIf you want to enable this however, you can do so by going to `settings -\u003e general`, and then enabling the `Keep original` option. Upon saving the settings, the original files will be kept.\n\nDo keep in mind here, that the exif data will NOT be removed from the original image. So make sure you do not accidentally share sensitive data.\n\n### This service says its supports the QOI format, what is this?\n\nQOI is a new lossless image format that is designed to be very fast to encode and decode. All while still offering good compression ratios. This is the primary format the server will store images in when uploaded.\n\nYou can [read more about QOI here](https://qoiformat.org/).\n\n### What is the default admin login?\n\nThe default username is `admin`, and the default password is set from the `PICSUR_ADMIN_PASSWORD` environment variable.\n\n### I get \"Copying to clipboard failed\"\n\nIt is only possible to use the clipboard functionality on HTTPS websites or localhost. Please ensure you are running Picsur with HTTPS.\n\n## Running your own instance\n\nYou easily run this service yourself via Docker. Here is an example docker-compose file:\n\n```yaml\nversion: '3'\nservices:\n  picsur:\n    image: ghcr.io/caramelfur/picsur:latest\n    container_name: picsur\n    ports:\n      - '8080:8080'\n    environment:\n      # PICSUR_HOST: '0.0.0.0'\n      # PICSUR_PORT: 8080\n\n      PICSUR_DB_HOST: picsur_postgres\n      # PICSUR_DB_PORT: 5432\n      # PICSUR_DB_USERNAME: picsur\n      # PICSUR_DB_PASSWORD: picsur\n      # PICSUR_DB_DATABASE: picsur\n\n      ## The default username is admin, this is not modifiable\n      # PICSUR_ADMIN_PASSWORD: picsur\n\n      ## Optional, random secret will be generated if not set\n      # PICSUR_JWT_SECRET: CHANGE_ME\n      # PICSUR_JWT_EXPIRY: 7d\n\n      ## Maximum accepted size for uploads in bytes\n      # PICSUR_MAX_FILE_SIZE: 128000000\n      ## No need to touch this, unless you use a custom frontend\n      # PICSUR_STATIC_FRONTEND_ROOT: \"/picsur/frontend/dist\"\n\n      ## Warning: Verbose mode might log sensitive data\n      # PICSUR_VERBOSE: \"true\"\n    restart: unless-stopped\n  picsur_postgres:\n    image: postgres:17-alpine\n    container_name: picsur_postgres\n    environment:\n      POSTGRES_DB: picsur\n      POSTGRES_PASSWORD: picsur\n      POSTGRES_USER: picsur\n    restart: unless-stopped\n    volumes:\n      - picsur-data:/var/lib/postgresql/data\nvolumes:\n  picsur-data:\n```\n\n## Thanks\n\n- @aldumil for once donating $5\n- @mcmastererp for monthly donating $2 from March 2024 to Oktober 2024\n- @gander for monthly donating $5 from March 2024 to November 2024\n- @TheSameCat2 for monthly donating $5 from November 2023 to May 2024\n- @LordCrashWire for once donating $20\n- @chennin for monthly donating $4 from June 2023 to September 2024\n- @awg13 for once donating $10\n\n## Api\n\nHere is a usually up to date documentation of the api:\n\n[![Run in Postman](https://run.pstmn.io/button.svg)](https://www.postman.com/caramel-team/workspace/picsur/collection/1841871-78e559b6-4f39-4092-87c3-92fa29547d03)\n\nIf you wish to build your own frontend or app for picsur, this will surely come in handy. Also take a look at the `./shared` folder in the source code, as it contains typescript schema definitions for the api.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaramelfur%2Fpicsur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaramelfur%2Fpicsur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaramelfur%2Fpicsur/lists"}