Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions .github/styles/Vocab/ipfs-docs-vocab/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,21 @@ atcute
(?i)DNSLink
(?i)FQDNs?
(?i)IPFS
(?i)JavaScript
(?i)JS-IPFS
(?i)json
(?i)libp2p
(?i)JavaScript
(?i)Merkle
(?i)Netlify
(?i)NFTs?
(?i)NPM
(?i)Netlify
(?i)Nginx
(?i)NodeJS
(?i)NPM
(?i)OAuth
(?i)PowerShell
(?i)URIs?
(?i)VPNs?
(?i)VSCode
(?i)json
(?i)libp2p
[Bb]it[Ss]wap
[Bb]lockchains?
[Bb]ool(ean)?
Expand Down
59 changes: 30 additions & 29 deletions .github/styles/pln-ignore.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
Bacalhau
Bluesky
Bootstrappers
CDN's
Caddyfile
DHT's
DNSimple
Datastores
Denylist
Filebase's
Fleek's
Gandi
IPFS's
IPIP
IPIPs
Kubo's
Lakhani
NFT's
OAuth
ORCESTRA's
PLNSpelling
SDKs
Someguy
Storacha's
Vuepress
WASM
Yamux
Zeeshan
Zelenka
_redirects
aave
accessor
Expand All @@ -17,30 +46,25 @@ atcute
auditable
audius
auspinner
Bacalhau
benchmarked
bioimaging
bit[ss]wap
bitswap
blockchain
blockchains
blockstore
Bluesky
bool
bool(ean)
boolean
bootstrapper
bootstrappers
Bootstrappers
boxo
browserify
buzhash
caddy
Caddyfile
callout
callouts
cas
CDN's
cdn('s)
cdns
certbot
Expand All @@ -63,26 +87,23 @@ cpu
cpus
crowdsourcing
crypto(currencies)
dClimate
daos
dapps
dask
data('s)
datastore
datastores
Datastores
dClimate
deduplicate
deduplication
denylist
Denylist
dep
deps
deserialization
deserialized
devs
dheeraj
dht
DHT's
dht('s)
dhts
dialable
Expand All @@ -91,7 +112,6 @@ discoverability
dns('s)
dnsaddr
dnscontrol
DNSimple
dnslink
dotgraph
dups
Expand All @@ -106,19 +126,16 @@ fabien
facto
failovers
filebase
Filebase's
filecoin
filecorgi
filesizes
filestore
flatf[ss]
flatfs
fleek
Fleek's
fleek('s)
fqdns
fsspec
Gandi
gasless
geospatial
gif
Expand All @@ -142,11 +159,8 @@ infura
intercomparison
interop
ipfs
IPFS's
ipfsspec
ipget
IPIP
IPIPs
iroh
jakub
javascript
Expand All @@ -163,10 +177,8 @@ keepalive
keypair
keystores
kubo
Kubo's
kubuxu
laika
Lakhani
lan
lastalive
lastbootstrap
Expand Down Expand Up @@ -221,7 +233,6 @@ nats
neocities
netlify
next.js
NFT's
nft('s)
nfts
nginx
Expand All @@ -230,7 +241,6 @@ npm
octodns
onboarding
orcestra
ORCESTRA's
orcestras
packfile
parallelizable
Expand All @@ -243,7 +253,6 @@ pinset
pinsets
pipeable
plaintext
PLNSpelling
pluggable
powergate
powershell
Expand Down Expand Up @@ -280,7 +289,6 @@ runtime's
sandboxed
satoshi
satoshi nakamoto
SDKs
se
serverless
sharded
Expand All @@ -289,11 +297,9 @@ snapshotted
sneakernet
sneakernets
someguy
Someguy
stackparse
stdout
storacha
Storacha's
storj
subcommand
subsetting
Expand Down Expand Up @@ -327,11 +333,9 @@ userspace
vpns
vscode
vue
Vuepress
walkthrough
wantlist
wantlists
WASM
web
webpack
webpages
Expand All @@ -347,8 +351,5 @@ wifi
ws
wss
xarray
Yamux
youtube
zarr
Zeeshan
Zelenka
5 changes: 4 additions & 1 deletion docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ module.exports = {
['/quickstart/pin','Pin (Browser)'],
['/quickstart/pin-cli','Pin (CLI)'],
['/how-to/websites-on-ipfs/deploy-github-action', 'Deploy to IPFS with GitHub Actions' ],
['/how-to/websites-on-ipfs/pinion-build-github-app', 'Deploy to IPFS with the Pinion Build GitHub App' ],
]
},
{
Expand All @@ -130,7 +131,8 @@ module.exports = {
['/quickstart/pin','Pin (Browser)'],
['/quickstart/pin-cli','Pin (CLI)'],
['/how-to/websites-on-ipfs/deploy-github-action', 'Deploy to IPFS with GitHub Actions' ],

['/how-to/websites-on-ipfs/pinion-build-github-app', 'Deploy to IPFS with the Pinion Build GitHub App' ],

]
},
{
Expand Down Expand Up @@ -266,6 +268,7 @@ module.exports = {
'/how-to/websites-on-ipfs/redirects-and-custom-404s',
'/how-to/websites-on-ipfs/custom-domains',
'/how-to/websites-on-ipfs/deploy-github-action',
'/how-to/websites-on-ipfs/pinion-build-github-app',
'/how-to/websites-on-ipfs/dnslink-action',
'/how-to/websites-on-ipfs/dnslink-gateway',
]
Expand Down
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Provide data to the IPFS network with IPFS Desktop or a pinning service:
IPFS is a great fit for deploying static sites and dapps, check out the following guides to get started:

- [Deploy static sites to the IPFS network with a GitHub Action](./how-to/websites-on-ipfs/deploy-github-action.md).
- [Deploy to IPFS with the Pinion Build GitHub App](./how-to/websites-on-ipfs/pinion-build-github-app.md).
- [Set up a DNSLink gateway to serve your site via a custom domain](./how-to/websites-on-ipfs/dnslink-gateway.md).
- [Configure static site generators for publishing to IPFS](./how-to/websites-on-ipfs/static-site-generators.md).

Expand Down
104 changes: 104 additions & 0 deletions docs/how-to/websites-on-ipfs/pinion-build-github-app.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
---
title: Deploy to IPFS with the Pinion Build GitHub App
description: Guide on how to install and configure the Pinion Build GitHub App to automatically pin websites, releases, and build artifacts to IPFS.
---

# Deploy to IPFS with the Pinion Build GitHub App

[Pinion Build](https://pinion.build) offers a [GitHub App](https://github.com/settings/apps/pinion-build) that automatically pins your repository content — websites, release assets, and build artifacts — to IPFS. It is an alternative to the [IPFS Deploy Action](./deploy-github-action.md) and operates as an external service that reacts to GitHub events. No workflow file is required.

## When to use the GitHub App

The GitHub App may be a good fit if any of the following apply:

- **OAuth authentication**: The app authenticates via OAuth. No long-lived API tokens need to be created or stored as repository secrets, reducing the risk of credential exposure.
- **CI status checks**: The app posts a commit status check under the `pinion/ipfs` context, which appears as a green checkmark in the GitHub UI alongside your other checks.
- **CID visibility**: The pinned CID is shown directly in the commit status area of the GitHub interface, making it accessible to contributors without inspecting workflow logs.
- **Release and artifact pinning**: The app can pin GitHub release assets using glob pattern filters, in addition to website directories.

## Prerequisites

- A GitHub repository
- A [Pinion Build](https://pinion.build) account

## Step 1: Install the GitHub App

1. Sign in to your [Pinion Build dashboard](https://pinion.build).
2. Navigate to your profile page.
3. Click **Install the GitHub App** and follow the GitHub OAuth flow to grant Pinion Build access to the repositories you want to enable.

Alternatively, you can initiate the installation directly from [github.com/settings/apps/pinion-build](https://github.com/settings/apps/pinion-build).

During installation, you can choose to grant access to all repositories or only specific ones.

## Step 2: Add a configuration file

Add a `pinion.build.yaml` file to the root of your repository. This file tells the app what to pin.

```yaml
version: 1

# Pin subdirectories on push to a branch
subdirectories:
enabled: true
branch: "main" # Branch to watch
paths:
- "dist/" # Build output directory
- "docs/" # Documentation directory

# Pin release assets when a GitHub release is published
release_assets:
enabled: true
patterns:
- "*.tar.gz"
- "*.zip"
include_source_code: true
```

Commit and push this file to your repository. The app will begin reacting to events immediately.

### Configuration reference

#### `subdirectories`

Pins one or more directories from your repository on every push to the configured branch.

| Field | Type | Description |
|---|---|---|
| `enabled` | bool | Enable or disable subdirectory pinning |
| `branch` | string | The branch to watch (default: `"main"`) |
| `paths` | list of strings | Repository paths to pin independently |

Each path is pinned as a separate IPFS object and gets its own CID. If your site is built in CI and committed to the repository (e.g. a `dist/` or `_site/` directory), this is how you pin it automatically on every push.

#### `release_assets`

Pins assets attached to GitHub releases.

| Field | Type | Description |
|---|---|---|
| `enabled` | bool | Enable or disable release asset pinning |
| `patterns` | list of glob strings | Only pin assets whose filenames match these patterns |
| `include_source_code` | bool | Whether to include the auto-generated source code archives (`Source code (zip)`, `Source code (tar.gz)`) that GitHub attaches to every release |

## Step 3: Verify the integration

After pushing your `pinion.build.yaml` file:

1. Open your repository on GitHub and navigate to a recent commit.
2. Click the status check indicator (the circle next to the commit hash) to expand the checks panel.
3. Look for the `pinion/ipfs` check. Once content is pinned, the check will show a green checkmark and the resulting CID.

You can also view webhook delivery logs from the GitHub Events page in your Pinion Build dashboard to diagnose any issues.

## Accessing your pinned content

Once a pin is complete, you can access the content through any IPFS gateway using the CID shown in the commit status check:

- **Public Good Gateway**: `https://<CID>.ipfs.dweb.link`
- **Service Worker Gateway**: `https://<CID>.ipfs.inbrowser.link`

## Next steps

- **Add a custom domain**: Use [DNSLink](./dnslink-action.md) to point a human-readable domain name at your latest pinned CID.
- **Set up a DNSLink gateway**: Serve your site over HTTPS from your own domain with a [DNSLink gateway](./dnslink-gateway.md).
2 changes: 2 additions & 0 deletions docs/install/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ Do you want to quickly and easily publish content with IPFS without complex tool

Do you want to quickly and easily automate the deployment of static websites to the IPFS network? See the [Deploy static sites to the IPFS network with GitHub Actions](../how-to/websites-on-ipfs/deploy-github-action.md), where you'll learn how to use [GitHub Actions](https://github.com/ipshipyard/ipfs-deploy-action) to automatically deploy static websites to the IPFS network.

Alternatively, the [Pinion Build GitHub App](../how-to/websites-on-ipfs/pinion-build-github-app.md) provides OAuth-based pinning without requiring a workflow file or long-lived tokens in your repository.

## Infrastructure Tools

### Kubo
Expand Down
Loading