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

Overview

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

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
You might also like...
Pure-Go library for cross-platform local peer discovery using UDP multicast :woman: :repeat: :woman:
Pure-Go library for cross-platform local peer discovery using UDP multicast :woman: :repeat: :woman:

peerdiscovery Pure-go library for cross-platform thread-safe local peer discovery using UDP multicast. I needed to use peer discovery for croc and eve

Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and deadline support. MIT Licensed.

socket Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and d

Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface).

windows-ndi-optimizer[WIP] Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface). How it works This is batchfile d

A simple network analyzer that capture http network traffic
A simple network analyzer that capture http network traffic

httpcap A simple network analyzer that captures http network traffic. support Windows/MacOS/Linux/OpenWrt(x64) https only capture clienthello colorful

llb - It's a very simple but quick backend for proxy servers. Can be useful for fast redirection to predefined domain with zero memory allocation and fast response.

llb What the f--k it is? It's a very simple but quick backend for proxy servers. You can setup redirect to your main domain or just show HTTP/1.1 404

A suite of gRPC debugging tools. Like Fiddler/Charles but for gRPC.

grpc-tools A suite of tools for gRPC debugging and development. Like Fiddler/Charles but for gRPC! The main tool is grpc-dump which transparently inte

A zero cost, faster multi-language  bidirectional microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! 𝐉𝐚𝐯𝐚有𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠有𝐫𝐩𝐜𝐱!
Yet another TCP Port Scanner, but lightning faster.

Fast TCP Port Scanner A highly concurrent TCP port scanner. Run Tests with Code Coverage (Linux) go test -cover Compile (Linux) go build -v -o fglps R

Comments
  • Dockerize ?

    Dockerize ?

    Hi,

    This is really good idea and a step to roll out decentralized systems to mainstream. I appreciate it.

    Is it possible that we might use containers to spin this off on our machines?

    Cheers,

    opened by UmutAlihan 1
Owner
George
George
DeepValueNetwork is a peer-to-peer database network managed and hosted by its community.

DeepValueNetwork To understand what DeepValueNetwork will be, I suggest you read this document. In progress This software is currently being developed

DeepValue Network 335 Dec 10, 2022
Steve - A peer-to-peer (p2p) decentralized network

Steve Steve is a peer-to-peer (p2p) decentralized network that enables people to

Steve Care Software Inc 4 Feb 5, 2022
Activitypub-server - PubChannel - a libre, self-hostable, federated, imageboard platform that utilizes ActivityPub

About PubChannel is a libre, self-hostable, federated, imageboard platform that

Devyn 0 Jan 11, 2022
📦 Command line peer-to-peer data transfer tool based on libp2p.

pcp - Peer Copy Command line peer-to-peer data transfer tool based on libp2p. Table of Contents Motivation Project Status How does it work? Usage Inst

Dennis Trautwein 911 Jan 5, 2023
Group peer to peer video calls for everyone written in Go and TypeScript

Peer Calls v4 WebRTC peer to peer calls for everyone. See it live in action at peercalls.com. The server has been completely rewriten in Go and all th

Peer Calls 1.2k Dec 30, 2022
gopunch is a go implementation of a peer-to-peer chat service built using UDP hole punching.

Gopunch gopunch is a go implementation of a peer-to-peer chat service built using UDP hole punching. This is a toy implementation that I put together

Peyton Walters 10 May 24, 2022
Peer-to-peer hypermedia protocol

IPFS powers the Distributed Web A peer-to-peer hypermedia protocol to make the web faster, safer, and more open. TL;DR Get help and talk about ideas i

IPFS 21.7k Jan 5, 2023
Go-ipfs-pinner - The pinner system is responsible for keeping track of which objects a user wants to keep stored locally

go-ipfs-pinner Background The pinner system is responsible for keeping track of

y 0 Jan 18, 2022
Snugger is a light weight but fast network recon scanner that is written from pure golang

Snugger is a light weight but fast network recon scanner that is written from pure golang. with this scann you can ARP your network, port scan hosts and host lists, as well as scan for BSSId

RE43P3R 2 May 19, 2022
Share plain text, images and files in Local area network.

LAN-Share Share plain text, images and files in Local area network. Usage $ lan-share -h Usage of lan-share: -addr string Listen on address

Liming Jin 3 Jan 25, 2022