An easy to use, selfhostable image sharing service

Overview

Picsur


Totally not an imgur clone

I couldn't really find any open source project that allowed you to easily host images. So I decided to create one.

It works like a hybrid between imgur and pastebin.

Beta

Right now this software is still in beta, and many things are still missing, or will be changed in the future. But it does function, so feel free to give it a try.

Demo

You can view a live demo here: https://picsur.rubikscraft.nl/

The images are deleted every five minutes, and the max filesize is 16MB. But it should give you an indication of how it works.

Bugs

If you encounter any bugs or oddities, please open an issue here. Cause without feedback I'll never know they exists.

Running

You easily run this service yourself via Docker. Here is an example docker-compose file:

version: "3"
services:
  picsur:
    image: ghcr.io/rubikscraft/picsur:latest
    container_name: picsur
    ports:
      - "8080:8080"
    environment:
      # PICSUR_HOST: '0.0.0.0'
      # PICSUR_PORT: 8080

      PICSUR_DB_HOST: picsur_postgres
      # PICSUR_DB_PORT: 5432
      # PICSUR_DB_USER: picsur
      # PICSUR_DB_PASSWORD: picsur
      # PICSUR_DB_NAME: picsur

      # PICSUR_ADMIN_PASSWORD: picsur

      # PICSUR_JWT_SECRET: CHANGE_ME
      # PICSUR_JWT_EXPIRY: 1d

      # PICSUR_MAX_FILE_SIZE: 128000000
      # PICSUR_STATIC_FRONTEND_ROOT: "/picsur/frontend/dist"
    restart: unless-stopped
  picsur_postgres:
    image: postgres:11-alpine
    container_name: picsur_postgres
    environment:
      POSTGRES_DB: picsur
      POSTGRES_PASSWORD: picsur
      POSTGRES_USER: picsur
    restart: unless-stopped
    volumes:
      - picsur-data:/var/lib/postgresql/data
volumes:
  picsur-data:

Api

Here is a usually up to date documentation of the api:

Run in Postman

Comments
  • Image upload always fails with

    Image upload always fails with "InternalFailure: Worker closed"

    I've set up Picsur v0.3.1 with the standard docker configuration behind an nginx proxy. The container is up and running, the app can be accessed via web, login and changing settings work like a charm. But I'm unable to upload images. It's "Processing" them for about a second and then shows a red error "Worker closed". A similar message appears in the logs:

    [Nest] 36 - 08/30/2022, 9:04:12 AM ERROR [MainExceptionFilter] (172.21.0.1 -> POST /api/image/upload) InternalFailure: Worker closed

    The database container is not showing any errors at all. I've tried Firefox and Edge as well as upload per file selector or drag and drop, but it's always the same result.

    Docker Inspect { "AppArmorProfile": "docker-default", "Args": [ "/bin/sh", "-c", "/bin/bash -c \"yarn workspace picsur-backend start:prod\"" ], "Config": { "AttachStderr": true, "AttachStdin": false, "AttachStdout": true, "Cmd": [ "/bin/sh", "-c", "/bin/bash -c \"yarn workspace picsur-backend start:prod\"" ], "Domainname": "", "Entrypoint": [ "docker-entrypoint.sh" ], "Env": [ "PICSUR_DB_HOST=picsur_postgres", "PICSUR_PORT=5007", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "NODE_VERSION=18.8.0", "YARN_VERSION=1.22.19", "PICSUR_PRODUCTION=true" ], "ExposedPorts": { "5007/tcp": {} }, "Hostname": "9531e92981de", "Image": "ghcr.io/rubikscraft/picsur:latest", "Labels": { "com.docker.compose.config-hash": "e35a85a18e6bab7941072f9b70240c37a6ecd909a4044fa691710a01a08b754d", "com.docker.compose.container-number": "1", "com.docker.compose.depends_on": "", "com.docker.compose.image": "sha256:5d57948b0f8181bc4bc3e17cd148581faaf541a93246fc708dba3c7671fbea58", "com.docker.compose.oneoff": "False", "com.docker.compose.project": "picsur", "com.docker.compose.project.config_files": "/data/compose/15/docker-compose.yml", "com.docker.compose.project.working_dir": "/data/compose/15", "com.docker.compose.service": "picsur", "com.docker.compose.version": "2.5.1" }, "OnBuild": null, "OpenStdin": false, "StdinOnce": false, "Tty": false, "User": "", "Volumes": null, "WorkingDir": "/picsur" }, "Created": "2022-08-30T08:40:10.100727336Z", "Driver": "overlay2", "ExecIDs": null, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/af894f23d8b4433b75dfaa6b16dff8986611c57b0453dd61f4a305ee1e1f2a4b-init/diff:/var/lib/docker/overlay2/0c281565965ea9e58c308cb0c09a27f6efc3df50ae46e97e089eb97b36ebfd48/diff:/var/lib/docker/overlay2/ed8ea733826ec00794d5d1f0e4a78aee85d23545712749a66d80b3e2174b4b1d/diff:/var/lib/docker/overlay2/391c7d17d7c59ce4775ddb23eea006900d51b1ece4175024cb2858b162fa105e/diff:/var/lib/docker/overlay2/aab5da82745621ba20b67449bdd536a09bb543ca7fc0bf2ddd34dc0bdf3474f9/diff:/var/lib/docker/overlay2/4260416ba9094b0c4e264a59e917eedcbf2d91e71f421cbf89309e52ee0c6d07/diff:/var/lib/docker/overlay2/344b49b09803093aa26870adb3582e58559b0886a09f70a416553eb011b43f6d/diff:/var/lib/docker/overlay2/35b0bdc67499777a58e0db1a31081b0224cfff150cf766b937706e205f2260a2/diff:/var/lib/docker/overlay2/8b65ac6c6223432afdb452290536e6044cdec6f8bc05bfdf577ef452d22767aa/diff:/var/lib/docker/overlay2/47dd543c72ce0e72ab665da7ee3e010eb1d751bb0b8ad0fc5cdc01b2d0bcd32a/diff:/var/lib/docker/overlay2/61e6d08a26dc7323df978985ede581fd07b488507d4028a80c290f0ca7041980/diff:/var/lib/docker/overlay2/e9af43e1c17855988f730f977a90264d710e64afe624afbc7ed14c3fcb636f6f/diff:/var/lib/docker/overlay2/5732c53dc0cab00f93ee3017bf608a21aaca4e28a36130e8f156438aaf975a80/diff:/var/lib/docker/overlay2/f769223b4ea87e0bd5b5ec3f08557b2f6947272379d57582400a4023fadeba29/diff:/var/lib/docker/overlay2/9752d19b41eff8f74f81f452e6c013ddf88a6207a2b093e92cf4ac9da68d7df4/diff", "MergedDir": "/var/lib/docker/overlay2/af894f23d8b4433b75dfaa6b16dff8986611c57b0453dd61f4a305ee1e1f2a4b/merged", "UpperDir": "/var/lib/docker/overlay2/af894f23d8b4433b75dfaa6b16dff8986611c57b0453dd61f4a305ee1e1f2a4b/diff", "WorkDir": "/var/lib/docker/overlay2/af894f23d8b4433b75dfaa6b16dff8986611c57b0453dd61f4a305ee1e1f2a4b/work" }, "Name": "overlay2" }, "HostConfig": { "AutoRemove": false, "Binds": [], "BlkioDeviceReadBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceWriteIOps": null, "BlkioWeight": 0, "BlkioWeightDevice": null, "CapAdd": null, "CapDrop": null, "Cgroup": "", "CgroupParent": "", "CgroupnsMode": "private", "ConsoleSize": [ 0, 0 ], "ContainerIDFile": "", "CpuCount": 0, "CpuPercent": 0, "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpuShares": 0, "CpusetCpus": "", "CpusetMems": "", "DeviceCgroupRules": null, "DeviceRequests": null, "Devices": null, "Dns": null, "DnsOptions": null, "DnsSearch": null, "ExtraHosts": [], "GroupAdd": null, "IOMaximumBandwidth": 0, "IOMaximumIOps": 0, "IpcMode": "private", "Isolation": "", "KernelMemory": 0, "KernelMemoryTCP": 0, "Links": null, "LogConfig": { "Config": {}, "Type": "json-file" }, "MaskedPaths": [ "/proc/asound", "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware" ], "Memory": 0, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "NanoCpus": 0, "NetworkMode": "picsur_default", "OomKillDisable": null, "OomScoreAdj": 0, "PidMode": "", "PidsLimit": null, "PortBindings": { "5007/tcp": [ { "HostIp": "", "HostPort": "5007" } ] }, "Privileged": false, "PublishAllPorts": false, "ReadonlyPaths": [ "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ], "ReadonlyRootfs": false, "RestartPolicy": { "MaximumRetryCount": 0, "Name": "unless-stopped" }, "Runtime": "runc", "SecurityOpt": null, "ShmSize": 67108864, "UTSMode": "", "Ulimits": null, "UsernsMode": "", "VolumeDriver": "", "VolumesFrom": null }, "HostnamePath": "/var/lib/docker/containers/9531e92981de994e5ccb420996a962670e4b9cac2cc4858b7ba36654bd275a97/hostname", "HostsPath": "/var/lib/docker/containers/9531e92981de994e5ccb420996a962670e4b9cac2cc4858b7ba36654bd275a97/hosts", "Id": "9531e92981de994e5ccb420996a962670e4b9cac2cc4858b7ba36654bd275a97", "Image": "sha256:5d57948b0f8181bc4bc3e17cd148581faaf541a93246fc708dba3c7671fbea58", "LogPath": "/var/lib/docker/containers/9531e92981de994e5ccb420996a962670e4b9cac2cc4858b7ba36654bd275a97/9531e92981de994e5ccb420996a962670e4b9cac2cc4858b7ba36654bd275a97-json.log", "MountLabel": "", "Mounts": [], "Name": "/picsur", "NetworkSettings": { "Bridge": "", "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "HairpinMode": false, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "MacAddress": "", "Networks": { "picsur_default": { "Aliases": [ "picsur", "picsur", "9531e92981de" ], "DriverOpts": null, "EndpointID": "5f9bdbf4368a62ef36734678e5f8220b5314c3d5fa2e37bad53847f33bed3053", "Gateway": "172.21.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAMConfig": null, "IPAddress": "172.21.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "Links": null, "MacAddress": "02:42:ac:15:00:02", "NetworkID": "bfe69a75414bf9c5f804919914f1b552bb80b2e9c4531f3ba6a15e02a24fdd3c" } }, "Ports": { "5007/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "5007" }, { "HostIp": "::", "HostPort": "5007" } ] }, "SandboxID": "4b92c5e64cc5b3f2360e6bac6379545fbf540c6a8b9b5f9d49a308087c74d557", "SandboxKey": "/var/run/docker/netns/4b92c5e64cc5", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null }, "Path": "docker-entrypoint.sh", "Platform": "linux", "Portainer": { "ResourceControl": { "Id": 7, "ResourceId": "2_picsur", "SubResourceIds": [], "Type": 6, "UserAccesses": [], "TeamAccesses": [], "Public": false, "AdministratorsOnly": true, "System": false } }, "ProcessLabel": "", "ResolvConfPath": "/var/lib/docker/containers/9531e92981de994e5ccb420996a962670e4b9cac2cc4858b7ba36654bd275a97/resolv.conf", "RestartCount": 0, "State": { "Dead": false, "Error": "", "ExitCode": 0, "FinishedAt": "0001-01-01T00:00:00Z", "OOMKilled": false, "Paused": false, "Pid": 439855, "Restarting": false, "Running": true, "StartedAt": "2022-08-30T08:40:10.459133454Z", "Status": "running" } }

    Unfortunately I can't find any further information to help identify the issue. Do you have an idea what else I could check? Any help is greatly appreciated!

    opened by Kurokha 11
  • Change of port number (left side) not working

    Change of port number (left side) not working

    I have tried to change port (left side) from 8080 to say 95 redirects to about:black page.

    I have also tried to change right side to 95 and the env port from 8080 to 95, didn't work.

    Only port 8080 on all sides works.

    I am not sure if it is a bug or what.

    Here is my yml:

    `version: '3' services: picsur: image: ghcr.io/rubikscraft/picsur:latest container_name: picsur ports: - '95:8080' environment: #PICSUR_HOST: '0.0.0.0' PICSUR_PORT: 8080 PICSUR_DB_HOST: picsur_postgres PICSUR_DB_PORT: 5432 PICSUR_DB_USERNAME: picsur PICSUR_DB_PASSWORD: picsur PICSUR_DB_DATABASE: picsur

      PICSUR_ADMIN_PASSWORD: picsur
    
      ## Optional, random secret will be generated if not set
      PICSUR_JWT_SECRET: long_string
      PICSUR_JWT_EXPIRY: 1d
      ## Maximum accepted size for uploads in bytes
      PICSUR_MAX_FILE_SIZE: 128000000
      ## No need to touch this, unless you use a custom frontend
      PICSUR_STATIC_FRONTEND_ROOT: "/picsur/frontend/dist"
    
      ## Warning: Verbose mode might log sensitive data
      # PICSUR_VERBOSE: "true"
    restart: unless-stopped
    

    picsur_postgres: image: postgres:14-alpine container_name: picsur_postgres environment: POSTGRES_DB: picsur POSTGRES_PASSWORD: picsur POSTGRES_USER: picsur restart: unless-stopped volumes: - /home/config/picsur:/var/lib/postgresql/data `

    opened by bigbeka 7
  • Host option not working behind cloudflare reverse proxy

    Host option not working behind cloudflare reverse proxy

    When i manually setted the docker compose behind cloudflare's proxy, environment: PICSUR_HOST: mydomain.com PICSUR_PORT: 443

    [Nest] 35 - 09/14/2022, 4:46:39 PM ERROR [NestApplication] Error: listen EADDRNOTAVAIL: address not available 172.67.171.53:443

    Error: listen EADDRNOTAVAIL: address not available 172.67.171.53:443

    at Server.setupListenHandle [as _listen2] (node:net:1468:21)
    
    at listenInCluster (node:net:1533:12)
    
    at GetAddrInfoReqWrap.doListen [as callback] (node:net:1682:7)
    
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:113:8) {
    

    code: 'EADDRNOTAVAIL',

    errno: -99,

    syscall: 'listen',

    address: '172.67.171.53',

    port: 443

    I am trying to set it manually because i want it to use the domain for the copying of the image sharing URL even when i am accessing it via local IP.

    (I have 2FA on my domain but not my local IP so its more convenient to login via local IP)

    enhancement low priority 
    opened by karmarcharger 2
  • Bump fastify from 4.8.1 to 4.10.2

    Bump fastify from 4.8.1 to 4.10.2

    Bumps fastify from 4.8.1 to 4.10.2.

    Release notes

    Sourced from fastify's releases.

    v4.10.2

    ⚠️ Security Release ⚠️

    Full Changelog: https://github.com/fastify/fastify/compare/v4.10.1...v4.10.2

    v4.10.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/fastify/fastify/compare/v4.10.0...v4.10.1

    v4.10.0

    What's Changed

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump engine.io from 6.2.0 to 6.2.1

    Bump engine.io from 6.2.0 to 6.2.1

    Bumps engine.io from 6.2.0 to 6.2.1.

    Release notes

    Sourced from engine.io's releases.

    6.2.1

    :warning: This release contains an important security fix :warning:

    A malicious client could send a specially crafted HTTP request, triggering an uncaught exception and killing the Node.js process:

    Error: read ECONNRESET
        at TCP.onStreamRead (internal/stream_base_commons.js:209:20)
    Emitted 'error' event on Socket instance at:
        at emitErrorNT (internal/streams/destroy.js:106:8)
        at emitErrorCloseNT (internal/streams/destroy.js:74:3)
        at processTicksAndRejections (internal/process/task_queues.js:80:21) {
      errno: -104,
      code: 'ECONNRESET',
      syscall: 'read'
    }
    

    Please upgrade as soon as possible.

    Bug Fixes

    • catch errors when destroying invalid upgrades (#658) (425e833)
    Changelog

    Sourced from engine.io's changelog.

    6.2.1 (2022-11-20)

    :warning: This release contains an important security fix :warning:

    A malicious client could send a specially crafted HTTP request, triggering an uncaught exception and killing the Node.js process:

    Error: read ECONNRESET
        at TCP.onStreamRead (internal/stream_base_commons.js:209:20)
    Emitted 'error' event on Socket instance at:
        at emitErrorNT (internal/streams/destroy.js:106:8)
        at emitErrorCloseNT (internal/streams/destroy.js:74:3)
        at processTicksAndRejections (internal/process/task_queues.js:80:21) {
      errno: -104,
      code: 'ECONNRESET',
      syscall: 'read'
    }
    

    Please upgrade as soon as possible.

    Bug Fixes

    • catch errors when destroying invalid upgrades (#658) (425e833)

    3.6.0 (2022-06-06)

    Bug Fixes

    Features

    • decrease the default value of maxHttpBufferSize (58e274c)

    This change reduces the default value from 100 mb to a more sane 1 mb.

    This helps protect the server against denial of service attacks by malicious clients sending huge amounts of data.

    See also: https://github.com/advisories/GHSA-j4f2-536g-r55m

    • increase the default value of pingTimeout (f55a79a)
    Commits
    • 24b847b chore(release): 6.2.1
    • 425e833 fix: catch errors when destroying invalid upgrades (#658)
    • 99adb00 chore(deps): bump xmlhttprequest-ssl and engine.io-client in /examples/latenc...
    • d196f6a chore(deps): bump minimatch from 3.0.4 to 3.1.2 (#660)
    • 7c1270f chore(deps): bump nanoid from 3.1.25 to 3.3.1 (#659)
    • 535a01d ci: add Node.js 18 in the test matrix
    • 1b71a6f docs: remove "Vanilla JS" highlight from README (#656)
    • 917d1d2 refactor: replace deprecated String.prototype.substr() (#646)
    • 020801a chore: add changelog for version 3.6.0
    • ed1d6f9 test: make test script work on Windows (#643)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump loader-utils from 2.0.2 to 2.0.4

    Bump loader-utils from 2.0.2 to 2.0.4

    Bumps loader-utils from 2.0.2 to 2.0.4.

    Release notes

    Sourced from loader-utils's releases.

    v2.0.4

    2.0.4 (2022-11-11)

    Bug Fixes

    v2.0.3

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)
    Changelog

    Sourced from loader-utils's changelog.

    2.0.4 (2022-11-11)

    Bug Fixes

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump loader-utils from 2.0.2 to 2.0.3

    Bump loader-utils from 2.0.2 to 2.0.3

    Bumps loader-utils from 2.0.2 to 2.0.3.

    Release notes

    Sourced from loader-utils's releases.

    v2.0.3

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)
    Changelog

    Sourced from loader-utils's changelog.

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Cached Image expiry time

    Cached Image expiry time

    image Does this setting means that the images uploaded will vanish eventually? what are the variables that can be used in this? how to make the image uploaded not vanish at all?

    opened by karmarcharger 1
  • Migration

    Migration "V030A1661692206479" failed, error: relation "e_image_backend" already exists

    Hi, I'm trying to upgrade to latest version, but I keep getting:

    ERROR [ExceptionHandler] relation "e_image_backend" already exists
    QueryFailedError: relation "e_image_backend" already exists
        at PostgresQueryRunner.query (/picsur/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:211:19)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
        at async V030A1661692206479.up (file:///picsur/backend/dist/database/migrations/1661692206479-V_0_3_0_a.js:12:9)
        at async MigrationExecutor.executePendingMigrations (/picsur/node_modules/typeorm/migration/MigrationExecutor.js:178:17)
        at async DataSource.runMigrations (/picsur/node_modules/typeorm/data-source/DataSource.js:248:35)
        at async DataSource.initialize (/picsur/node_modules/typeorm/data-source/DataSource.js:137:17)
    
    opened by MyWay 1
  • Bump file-type from 17.1.2 to 17.1.3

    Bump file-type from 17.1.2 to 17.1.3

    Bumps file-type from 17.1.2 to 17.1.3.

    Release notes

    Sourced from file-type's releases.

    v17.1.3

    https://github.com/sindresorhus/file-type/compare/v17.1.2...v17.1.3

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump sharp from 0.30.4 to 0.30.5

    Bump sharp from 0.30.4 to 0.30.5

    Bumps sharp from 0.30.4 to 0.30.5.

    Changelog

    Sourced from sharp's changelog.

    v0.30.5 - 23rd May 2022

    Commits
    • db654de Release v0.30.5
    • a6aeef6 Install: pass PKG_CONFIG_PATH via env rather than substitution
    • 7bf6cbd Docs: correct links to libvips documentation
    • 04c31b3 Install: warn about filesystem owner running npm v8+ as root
    • ee9cdb6 Bump deps
    • 8960eb8 Docs: changelog entry for #3218
    • 54d9dc4 Fix rotate-then-extract for EXIF orientation 2 (#3218)
    • 51b4a7c Add support for --libc flag to improve cross-platform install (#3160)
    • 5b03579 Docs: more details about concurrency, parallelism, threads
    • 58c2af3 Docs: improve output format info for toBuffer
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • [Feature-Request] View all saved images in one place.

    [Feature-Request] View all saved images in one place.

    A way, to view all saved images (like if you watch you own), this could be assigned through a permission and be accessed through a button called "View all Images"

    opened by LukasL28 0
  • [feature request] different types of links (thumbnail, medium size, ...)?

    [feature request] different types of links (thumbnail, medium size, ...)?

    I'm a chevereto-free user and discovered your very promising Picsur project a week ago. The only feature I miss is the availability of different types of links, like thumbnails or medium sized (see the picture of my self hosted server). Do you think it might be an interesting feature to add to Picsur? I can give you access to my chevereto server if needed. Thank you and long life to Picsur!

    Capture d’écran 2022-09-22 à 12 01 37

    opened by poulpor 5
  • Multiple pictures to drop and share as a simple Gallery

    Multiple pictures to drop and share as a simple Gallery

    Feature request Only one feature I really miss is "multiple pictures to drop and share as a simple gallery". Many file sharing self-hosted options out there, but none of them has what I am looking for. This would be so, so nice to have :) Thanks for the good job so far.

    enhancement 
    opened by mrg358 4
  • [feature request] image board

    [feature request] image board

    Add a mode that allows all users to see all photos added. This could be useful when multiple people are trying to find images or collaborate, something like an image board.

    enhancement 
    opened by DuckyBlender 6
Releases(0.5.0)
  • 0.5.0(Dec 28, 2022)

    Notable Updates:

    • [Website] Better preferences pane, now with help
    • [Website] Route splitting on client -> faster website load
    • [Website] Add loading indicators for slow internet connections
    • [Website] Moved to Angular 15
    • [Website] Add support for web tracking using Ackee
    • [Website] Show download progress when downloading an image
    • [Server] Add support for overriding the hostname
    • [Server] Add api ratelimits (please report if too aggresive)
    • [Server] Improve logging
    • [Server] Fix bug where caching was being ignored
    • [Server] Fix bug where qoi files were not converted properly
    Source code(tar.gz)
    Source code(zip)
  • 0.4.1(Oct 11, 2022)

    This releasy only includes updated depencies, to mitigate some vulnerabilities in older dependency versions.

    Updating is highly recommended

    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Sep 11, 2022)

    This is the next relatively large release of Picsur.

    The highlights are:

    • Add an ARM64 docker image, so all you synology and rpi fans can now finally use it too!
    • Add the ability to export a ShareX config right from the settings
    • Add expiring images

    And some other neat additions:

    • Save image filenames as image title
    • Allow editing of image titles
    • Add support for api keys
    • Improved branding
    • Smaller docker image ~2GB -> ~300MB
    Source code(tar.gz)
    Source code(zip)
  • 0.3.2(Aug 30, 2022)

  • 0.3.1(Aug 29, 2022)

  • 0.3.0(Aug 28, 2022)

    Warning, not compatible with V0.2.0 database, empty database recommended

    • Support for logging in
    • Support for registering
    • Support for role based permission management
    • Add system preferences
    • Add user preferences
    • Add ability to store original image
    • Add route animations
    • Setup correct CORS
    • Add exif stripping on any non-original images
    • Convert images between many types:
      • QOI
      • JPG
      • PNG
      • WEBP (animated supported)
      • TIFF
      • BMP
      • GIF
    • Link images to user account
    • Support deleting of images
    • Add own images overview
    • Allow primitive image editing
      • Resizing
      • Rotating
      • Quality
      • Flip
      • Strip transparency
      • Negative
      • Greyscale
    • Support DB migrations (so next versions should stay compatible)
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Mar 3, 2022)

  • 0.1.0(Feb 25, 2022)

Owner
Rubikscraft
Hi, I'm Rubikscraft. I like to program lots of different things. Currently working at Triple IT. Also the developer of Nuggetbot, and a huge furry.
Rubikscraft
A service for sharing encrypted Markdown notes from Obsidian. Notes are end-to-end-encrypted and are only stored temporarily.

?? Noteshare.space Noteshare.space is a service for sharing encrypted Markdown notes from Obsidian. Notes are end-to-end-encrypted and are only stored

Maxime Cannoodt 56 Dec 26, 2022
optimize image & upload file to cloud as image bed with tiny image automic.

Rush! 图片压缩 & 直传图床工具 这是一个兴趣使然的项目, 希望 Rush! 能让这个世界的网络资源浪费减少一点点 下载 Downloads 获取最新发行版 功能 Features 拖拽批量压缩图片, 支持格式 jpg/png/gif Drop to optimize, jpg/png/gif

{ Chao } 3 Nov 12, 2022
🖼️ Image proxy for Next.js. Makes it possible to use dynamic domains in next/image component.

Next.js Image Proxy Image proxy for Next.js. Makes it possible to use dynamic domains in next/image component. ❔ Motivation This library makes it poss

Blazity 30 Dec 1, 2022
⚡ A multipurpose meme marketplace and editor for creating, downloading and sharing memes with a ready to use API powered by Hasura GraphQL

Rocketmeme A multipurpose meme marketplace and editor for creating and downloading memes. View meme collection, browse different meme categories, like

Victor Eke 31 Nov 18, 2022
A NestJS module that allows you use Prisma, set up multiple Prisma services, and use multi-tenancy in each Prisma service.

NestJS Prisma Module Installation To use this package, first install it: npm i @sabinthedev/nestjs-prisma Basic Usage In order to use this package, yo

Sabin Adams 39 Dec 2, 2022
RESTful service to provide API linting as-a-service

API Linting Service Prerequisites / general idea General idea behind this API implementation is to provide an API as a service based on the awesome sp

Schwarz IT 6 Mar 14, 2022
TypeScript plugin for service-to-service (aka. "functionless") cloud integrations.

Functionless λ< Functionless is a TypeScript plugin that transforms TypeScript code into Service-to-Service (aka. "functionless") integrations, such a

sam 303 Jan 2, 2023
🎇 Dynamic Image Generator as a Service

Dynapic is a tool for generating images with dynamic content. You can use it to generate headers or profile pictures for your Social Media profiles, O

Kevin Wolf 7 Mar 17, 2022
MidJourney is an AI text-to-image service that generates images based on textual prompts. It is often used to create artistic or imaginative images, and is available on Discord and through a web interface here.

Midjourney MidJourney is an AI text-to-image service that generates images based on textual prompts. It is often used to create artistic or imaginativ

Andrew Tsegaye 8 May 1, 2023
jQuery based scrolling Bar, for PC and Smartphones (touch events). It is modern slim, easy to integrate, easy to use. Tested on Firefox/Chrome/Maxthon/iPhone/Android. Very light <7ko min.js and <1Ko min.css.

Nice-Scrollbar Responsive jQuery based scrolling Bar, for PC and Smartphones (touch events). It is modern slim, easy to integrate, easy to use. Tested

Renan LAVAREC 2 Jan 18, 2022
An easy to implement marquee JQuery plugin with pause on hover support. I know its easy because even I can use it.

Simple-Marquee Copyright (C) 2016 Fabian Valle An easy to implement marquee plugin. I know its easy because even I can use it. Forked from: https://gi

null 16 Aug 29, 2022
A Javascript library that discourages and prevents image theft/download by preventing client ability to retrieve the image.

ProtectImage.js ProtectImage.js is a Javascript library that helps prevent image theft by disabling traditional user interactions to download/copy ima

null 4 Aug 18, 2022
Simple JavaScript Library to add parallax image to background-image

Backpax Simple JavaScript Library to add parallax image to background-image Install $ npm install backpax --save Demo Demo page is here Usage If you

appleple 13 Oct 12, 2022
Piccloud is a full-stack (Angular & Spring Boot) online image clipboard that lets you share images over the internet by generating a unique URL. Others can access the image via this URL.

Piccloud Piccloud is a full-stack application built with Angular & Spring Boot. It is an online image clipboard that lets you share images over the in

Olayinka Atobiloye 3 Dec 15, 2022
Hashmat Noorani 4 Mar 21, 2023
Tax-finder - A web application sourcing and sharing tax data on Fortune 500 corporations.

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Bennett Huffman 1 Jan 1, 2022
Lets you add a character to Hacker News links to add social media and OpenGraph previews for sharing on things like Slack or Twitter.

news.ycombinator1.com Lets you add a character to Hacker News links to add social media and OpenGraph previews for sharing on things like Slack or Dis

Ian Langworth ☠ 38 Sep 18, 2022