Skip to content
/ ipfd Public

An imageboard, but images are stored in a peer-to-peer network

License

Notifications You must be signed in to change notification settings

zhoreeq/ipfd

Repository files navigation

Interplanetary File Dumpster

An imageboard, but images are stored in a peer-to-peer network

Features:

  • Easy file sharing without registration and SMS. Supports images, video and audio files.
  • Files are not stored on the disk, but are uploaded to the peer-to-peer IPFS network instead.
  • IPFS gateway is configurable. Use your own or any other public gateway to host uploaded files.
  • RSS feeds.
  • Comments and up/down votes.
  • Premoderation mode toggle.

Requirements

  • PostgreSQL database
  • IPFS node
  • Go 1.15.2 (only for building)
  • A web server is recommended, i.e. nginx

Run with docker

git clone https://github.com/zhoreeq/ipfd.git && cd ipfd
docker build -t ipfd .
docker-compose up -d

The app listens at http://localhost:8000

Build

  • git clone repo
  • run make

Install

  • copy (or symlink) static/ and templates/ directories to your location, i.e. /etc/ipfd
  • copy config.example to your location, i.e. /etc/ipfd/config
  • edit the config file
  • install database schema from migrations/xxx_init.up.sql file
  • optionally, configure nginx as a reverse proxy

Look inside contrib/ directory for systemd and nginx config files.

Run

./ipfd -config /etc/ipfd/config

Config options

  • SITE_URL, website url, i.e. https://example.org
  • SITE_NAME, website title
  • BIND_ADDRESS, bind ipfd web server to this address
  • DATABASE_URL, postgresql connection string
  • TEMPLATES_PATH, path to templates, i.e. /etc/ipfd/templates
  • STATIC_URL, URL to static files
  • STATIC_PATH, path to static files, i.e. /etc/ipfd/static
  • SERVE_STATIC, if you want to serve static with nginx, set this to false
  • IPFS_API, IPFS node settings, by default it should be /ip4/127.0.0.1/tcp/5001
  • IPFS_GATEWAY, URL of IPFS gateway
  • IPFS_PIN, files are not pinned in the IPFS repository if set to false
  • MAX_FILESIZE, maximum uploaded file size in bytes
  • ALLOWED_CONTENT_TYPES, which MIME file types are allowed
  • PREMODERATION, if true, posts are not displayed until admin approves them manually