---
# System prepended metadata

title: go-ipfs crash course

---

# go-ipfs crash course

- Normally used as a binary that runs on your machine with CLI + HTTP API interfaces
- More advanced usage by utilizing go-ipfs as a library or build go plugins is possible
- Doing a walkthrough with the CLI, but almost anything you can do with the CLI can also be done with the HTTP API

## Terminals

- Start up two terminals
- `ipfs id`, we're running a libp2p node here are stats
- `ipfs add/get/cat/ls`
  - `ipfs add file.txt` + `ipfs cat Qm...`
  - `ipfs add file.txt --chunker=buzhash` + `ipfs cat Qm...` same results
  - Gateway, showing 127.0.0.1:8080/ipfs/Qm...
  - `ipfs add -r dir`
  - `ipfs ls Qm...`
  - show on gateway
- `ipfs pin`
  - `ipfs pin ls`
  - `ipfs get bafy...`
  - `ipfs pin ls` unchanged
  - `ipfs pin add bafy... --offline` (i.e. no network since we already have it)
  - `ipfs pin ls` shows data
- `ipfs swarm connect /p2p/peer...` p2p DNS
- `ipfs pubsub`
- If Time:
  - `ipfs dag`
    - `ipfs dag put/get`
    - `ipfs dag import/export`
  - DNSLink teaser
  - IPNS