All Projects → AuHau → Ipfs Publish

AuHau / Ipfs Publish

Licence: mit
Continuous Delivery of static websites to IPFS

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Ipfs Publish

Lightning Sites
☁️ Lightning deployment for your ~/Sites folders
Stars: ✭ 8 (-83.33%)
Mutual labels:  continuous-delivery
Rust Multibase
Multibase in rust
Stars: ✭ 30 (-37.5%)
Mutual labels:  ipfs
Ipfs Webui
A frontend for an IPFS node.
Stars: ✭ 990 (+1962.5%)
Mutual labels:  ipfs
Screwdriver
An open source build platform designed for continuous delivery.
Stars: ✭ 870 (+1712.5%)
Mutual labels:  continuous-delivery
Mu
A full-stack DevOps on AWS framework
Stars: ✭ 948 (+1875%)
Mutual labels:  continuous-delivery
Nixipfs Scripts
Mirror a Hydra jobset using IPFS or plain rsync
Stars: ✭ 33 (-31.25%)
Mutual labels:  ipfs
Subnode.org
SubNode: Social Media App
Stars: ✭ 25 (-47.92%)
Mutual labels:  ipfs
Spinnaker
Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.
Stars: ✭ 8,215 (+17014.58%)
Mutual labels:  continuous-delivery
Filemap.xyz
upload files to a geographic point. never memorize a link again.
Stars: ✭ 29 (-39.58%)
Mutual labels:  ipfs
Gocd S3 Artifacts
Set of GoCD plugins to publish and fetch artifacts from Amazon S3
Stars: ✭ 35 (-27.08%)
Mutual labels:  continuous-delivery
Notes
ideas and planning on how to use IPFS together with Nix/OS
Stars: ✭ 15 (-68.75%)
Mutual labels:  ipfs
Git Push Deploy
Simple Automated CI/CD Pipeline for GitHub and GitLab Projects
Stars: ✭ 21 (-56.25%)
Mutual labels:  continuous-delivery
Notes
[DEPRECATED] Textile Notes App
Stars: ✭ 35 (-27.08%)
Mutual labels:  ipfs
Accompli
An easy to use and extendable deployment tool for (PHP) projects.
Stars: ✭ 9 (-81.25%)
Mutual labels:  continuous-delivery
Qri
you're invited to a data party!
Stars: ✭ 1,003 (+1989.58%)
Mutual labels:  ipfs
Awesome Blockchain
⚡️Curated list of resources for the development and applications of blockchain.
Stars: ✭ 937 (+1852.08%)
Mutual labels:  ipfs
Dapp
TypeScript React Redux Ethereum IPFS Starter Kit
Stars: ✭ 33 (-31.25%)
Mutual labels:  ipfs
Cd Maturity Model
Continuous Delivery Maturity Model - Gap Analysis Visualization Tool, using D3.js
Stars: ✭ 45 (-6.25%)
Mutual labels:  continuous-delivery
Watchtower
A process for automating Docker container base image updates.
Stars: ✭ 9,526 (+19745.83%)
Mutual labels:  continuous-delivery
Cyclone
Powerful workflow engine and end-to-end pipeline solutions implemented with native Kubernetes resources. https://cyclone.dev
Stars: ✭ 978 (+1937.5%)
Mutual labels:  continuous-delivery

IPFS Publish

Git+IPFS=Love

PyPI version PyPI - Python Version PyPI - Downloads Docker Hub - Pulls codecov Codacy Badge Updates

Continuous Delivery of static websites from Git to IPFS

About

This is a tool that aims to enable automatic publishing of static webpages from Git repositories into IPFS. It consists of two parts: small web server and management CLI.

Web server exposes an endpoint which you use as your Git's webhook. When the hook is invoked, it clones your repo, build it (if needed), add it to the IPFS node (pin it if configured) and publish the new IPFS address under configured IPNS name.

CLI is in place to manage the repos.

Features

  • Ignore files - .ipfs_publish_ignore file specify entries that should be removed before adding the repo to IPFS
  • Publish directory - you can publish only specific sub-directory inside the repo
  • Publish specific branch - you can specify which branch should be published from the repo
  • Build script - before adding to IPFS you can run script/binary inside the cloned repo
  • After publish script - after the publishing to IPFS, this script is run with argument of the created IPFS address
  • Direct DNSLink update for CloudFlare DNS provider

Git providers

Currently the webhook supports generic mode, where the repo's secret is passed through as URL's parameter.

There is also special mode for GitHub, where the secret should be configured as part of the Webhook's configuration.

Warning

This tool is not meant as public service and only trusted Git repos should be used with it. It can introduce serious security risk into your system as the runtime environment for the scripts is not isolated from rest of your machine!

Install

Requirements

  • Python 3.7 and higher
  • Git
  • go-ipfs daemon (tested with version 4.23)
  • UNIX-Like machine with public IP

pip

You can install ipfs-publish directly on your machine using pip:

$ pip install ipfs-publish

Then you can use the command ipfs-publish to manage your repos and/or start the webhook's server.

Docker

There is official Docker image build with name: auhau/ipfs-publish

Easiest way to run ipfs-publish is with docker-compose. Here is example for its configuration:

version: '3'

services:
  ipfs:
    image: ipfs/go-ipfs:v0.4.23
    volumes:
      - /data/ipfs # or you can mount it directly to some directory on your system
  ipfs-publish:
    image: auhau/ipfs-publish
    environment:
      IPFS_PUBLISH_CONFIG: /data/ipfs_publish/config.toml
      IPFS_PUBLISH_VERBOSITY: 3
      IPFS_PUBLISH_IPFS_HOST: ipfs
      IPFS_PUBLISH_IPFS_PORT: 5001
    volumes:
      - /data/ipfs_publish
    depends_on:
      - ipfs
    ports:
      - 8080:8000

For more information see documentation.

Usage

# Add new repo
$ ipfs-publish add
[?] Git URL of the repo: https://github.com/auhau/auhau.github.io
[?] Name of the new repo: github_com_auhau_auhau_github_io
[?] Do you want to publish to IPNS? (Y/n):
[?] Path to build binary, if you want to do some pre-processing before publishing:
[?] Path to after-publish binary, if you want to do some actions after publishing:
[?] Directory to be published inside the repo. Path related to the root of the repo: /

Successfully added new repo!
Use this URL for you webhook: http://localhost:8080/publish/github_com_auhau_auhau_github_io
Also set this string as your hook's Secret: NIHT4785CVFT358GFE08RDAZG
Your IPNS address: /ipns/QmRTqaW3AJJXmKyiNT7MqqZ4VjGtNNxPyTkgo3Q7pmoCeX/

# List current enabled repos
$ ipfs-publish list
github_com_auhau_auhau_github_io

# Show details of repo
$ ipfs-publish show github_com_auhau_auhau_github_io
github_com_auhau_auhau_github_io
Git URL: https://github.com/auhau/auhau.github.io
Secret: EAHJ43UYT7LUEM4QFRZ4IFAXL
IPNS key: ipfs_publishg_github_com_auhau_auhau_github_io
IPNS lifetime: 24h
IPNS ttl: 15m
IPNS address: /ipns/QmRTqaW3AJJXmKyiNT7MqqZ4VjGtNNxPyTkgo3Q7pmoCeX/
Last IPFS address: None
Webhook address: http://localhost:8080/publish/github_com_auhau_auhau_github_io

# You can manually publish repo
$ ipfs-publish publish github_com_auhau_auhau_github_io

# Starts HTTP server & IPNS republishing service
$ ipfs-publish server &
Running on http://localhost:8080 (CTRL + C to quit)

Contributing

Feel free to dive in, contributions are welcomed! Open an issue or submit PRs.

For PRs and tips about development please see contribution guideline.

License

MIT © Adam Uhlir

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].