One difference is I set the npub as a dns record so that many sites can all share the same single CDN file
One other day on Nostr, one other app!
Today I'll present you a new self-hosted Nostr blog web application recently released on github by [dtonon](nostr:nprofile1qqs8hhhhhc3dmrje73squpz255ape7t448w86f7ltqemca7m0p99spg2pze85), _Oracolo_:
[https://github.com/dtonon/oracolo](https://github.com/dtonon/oracolo)
> _Oracolo is a minimalist blog powered by_ย [_Nostr_](https://njump.me/?ref=fractalized.net)_, that consists of a single html file, weighing only ~140Kb. You can use whatever Nostr client that supports long format (_[_habla.news_](https://habla.news/?ref=fractalized.net)_,_ย [_yakihonne_](https://yakihonne.com/?ref=fractalized.net)_,_ย [_highlighter.com_](https://highlighter.com/?ref=fractalized.net)_, etc ) to write your posts, and your personal blog is automatically updated.
> It works also without a web server; for example you can send it via email as a business card._
Oracolo fetches Nostr data, builds the page, execute the JavaScript code and displays article on clean and sobr blog (a Dark theme would be awesome ๐).
Blog articles are nostr events you published or will publish on Nostr relays through long notes applications like the ones quoted above.
* [habla.news](https://habla.news)
* [yakihonne](https://yakihonne.com)
* [highlighter.com](https://highlighter.com)
Don't forget to use a NIP07 web browser extensions to login on those websites. Old time where we were forced to fill our nsec key is nearly over!
For the hurry ones of you, you can find here the Oracolo demo with my Nostr long notes article. It will include this one when I'll publish it on Nostr!
[https://oracolo.fractalized.net/](https://oracolo.fractalized.net)
## How to self-host Oracolo?
You can build the application locally or use a docker compose stack to run it (or any other method). I just build a docker compose stack with Traefik and an Oracolo docker image to let you quickly run it.
The oracolo-docker github repo is available here:
[https://github.com/PastaGringo/oracolo-docker](https://github.com/PastaGringo/oracolo-docker)
_PS: don't freak out about the commits number, oracolo has been the lucky one to let me practrice docker image CI/CD build/push with Forgejo, that went well but it took me a while before finding how to make Forgejo runner dood work ๐). Please ping me on Nostr if you are interested by an article on this topic!_
This repo is a mirror from my new Forgejo git instance where the code has been originaly published and will be updated if needed (I think it will):
Here is how to do it.
1) First, you need to create an A DNS record into your domain.tld zone. You can create a A with "oracolo" .domain.tld or "\*" .domain.tld. The second one will allow traefik to generate all the future subdomain.domain.tld without having to create them in advance. You can verify DNS records with the website [https://dnschecker.org](https://dnschecker.org).
2) Clone the _oracolo-docker_ repository:
```bash
git clone https://git.fractalized.net/PastaGringo/oracolo-docker.git
cd oracolo-docker
```
3) Rename the _.env.example_ file:
```bash
mv .env.example .env
```
4) Modify and update your _.env_ file with your own infos:
```bash
# Let's Encrypt email used to generate the SSL certificate
LETSENCRYPT_EMAIL=
# domain for oracolo. Ex: oracolo.fractalized.net
ORACOLO_DOMAIN=
# Npub author at "npub" format, not HEX.
NPUB=
# Relays where Oracolo will retrieve the Nostr events.
# Ex: "wss://nostr.fractalized.net, wss://rnostr.fractalized.net"
RELAYS=
# Number of blog article with an thumbnail. Ex: 4
TOP_NOTES_NB=
```
5) Compose Oracolo:
```bash
docker compose up -d && docker compose logs -f oracolo traefik
```
```bash
[+] Running 2/0
โ Container traefik Running 0.0s
โ Container oracolo Running 0.0s
WARN[0000] /home/pastadmin/DEV/FORGEJO/PLAY/oracolo-docker/docker-compose.yml: `version` is obsolete
traefik | 2024-05-28T19:24:18Z INF Traefik version 3.0.0 built on 2024-04-29T14:25:59Z version=3.0.0
oracolo |
oracolo | ___ ____ ____ __ ___ _ ___
oracolo | / \ | \ / | / ] / \ | | / \
oracolo | | || D )| o | / / | || | | |
oracolo | | O || / | |/ / | O || |___ | O |
oracolo | | || \ | _ / \_ | || || |
oracolo | | || . \| | \ || || || |
oracolo | \___/ |__|\_||__|__|\____| \___/ |_____| \___/
oracolo |
oracolo | Oracolo dtonon's repo: https://github.com/dtonon/oracolo
oracolo |
oracolo | โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
oracolo | โ Docker Compose Env Vars โคต๏ธ โ
oracolo | โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
oracolo |
oracolo | NPUB : npub1ky4kxtyg0uxgw8g5p5mmedh8c8s6sqny6zmaaqj44gv4rk0plaus3m4fd2
oracolo | RELAYS : wss://nostr.fractalized.net, wss://rnostr.fractalized.net
oracolo | TOP_NOTES_NB : 4
oracolo |
oracolo | โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
oracolo | โ Configuring Oracolo... โคต๏ธ โ
oracolo | โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
oracolo |
oracolo | > Updating npub key with npub1ky4kxtyg0uxgw8g5p5mmedh8c8s6sqny6zmaaqj44gv4rk0plaus3m4fd2... โ
oracolo | > Updating nostr relays with wss://nostr.fractalized.net, wss://rnostr.fractalized.net... โ
oracolo | > Updating TOP_NOTE with value 4... โ
oracolo |
oracolo | โญโโโโโโโโโโโโโโโโโโโโโโโโฎ
oracolo | โ Installing Oracolo โคต๏ธ โ
oracolo | โฐโโโโโโโโโโโโโโโโโโโโโโโโฏ
oracolo |
oracolo | added 122 packages, and audited 123 packages in 8s
oracolo |
oracolo | 20 packages are looking for funding
oracolo | run `npm fund` for details
oracolo |
oracolo | found 0 vulnerabilities
oracolo | npm notice
oracolo | npm notice New minor version of npm available! 10.7.0 -> 10.8.0
oracolo | npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.8.0
oracolo | npm notice To update run: npm install -g npm@10.8.0
oracolo | npm notice
oracolo |
oracolo | >>> done โ
oracolo |
oracolo | โญโโโโโโโโโโโโโโโโโโโโโโฎ
oracolo | โ Building Oracolo โคต๏ธ โ
oracolo | โฐโโโโโโโโโโโโโโโโโโโโโโฏ
oracolo |
oracolo | > oracolo@0.0.0 build
oracolo | > vite build
oracolo |
oracolo | 7:32:49 PM [vite-plugin-svelte] WARNING: The following packages have a svelte field in their package.json but no exports condition for svelte.
oracolo |
oracolo | @splidejs/svelte-splide@0.2.9
oracolo | @splidejs/splide@4.1.4
oracolo |
oracolo | Please see https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/faq.md#missing-exports-condition for details.
oracolo | vite v5.2.11 building for production...
oracolo | transforming...
oracolo | โ 84 modules transformed.
oracolo | rendering chunks...
oracolo |
oracolo |
oracolo | Inlining: index-C6McxHm7.js
oracolo | Inlining: style-DubfL5gy.css
oracolo | computing gzip size...
oracolo | dist/index.html 233.15 kB โ gzip: 82.41 kB
oracolo | โ built in 7.08s
oracolo |
oracolo | >>> done โ
oracolo |
oracolo | > Copying Oracolo built index.html to nginx usr/share/nginx/html... โ
oracolo |
oracolo | โญโโโโโโโโโโโโโโโโโโโโโโโโโฎ
oracolo | โ Configuring Nginx... โคต๏ธ โ
oracolo | โฐโโโโโโโโโโโโโโโโโโโโโโโโโฏ
oracolo |
oracolo | > Copying default nginx.conf file... โ
oracolo |
oracolo | โญโโโโโโโโโโโโโโโโโโโโโโโฎ
oracolo | โ Starting Nginx... ๐ โ
oracolo | โฐโโโโโโโโโโโโโโโโโโโโโโโฏ
oracolo |
```
If you don't have any issue with the Traefik container, Oracolo should be live! ๐ฅ
You can now access it by going to the ORACOLO\_DOMAIN URL configured into the .env file.
Have a good day!
Don't hesisate to follow [dtonon](nostr:nprofile1qqs8hhhhhc3dmrje73squpz255ape7t448w86f7ltqemca7m0p99spg2pze85) on Nostr to follow-up the future updates โก๐ฅ
_See you soon in another Fractalized story!_
PastaGringo ๐คโก
Nice! I'm working on something similar
I've been meaning to write a relay that keeps multiple revisions of replaceable events.
hopefully in a couple weeks I'll have the time, it should be fairly straightforward and clients that can't handle revision wouldn't break (they already need to filter for the most recent event from multiple relays)
nostr:npub1fjqqy4a93z5zsjwsfxqhc2764kvykfdyttvldkkkdera8dr78vhsmmleku I know you were interested in this too, have you done any work in this direction?
curious if it would still honour delete requests or no?
honestly looks great
Is there a nip96 url scheme?
Something like "nip96://
Running #blossom
Would be good for that too. Eliminates mev as well
brainstorming opcodes that could enable non-interactive collaborative transactions. imagine if anyone could batch a bunch of mempool transactions together for coinjoins. with op_txhash you commit to your output which creates a link, so you canโt use stacking. maybe its not possible, but fun to think about. Has anyone thought about this? nostr:npub1vadcfln4ugt2h9ruwsuwu5vu5am4xaka7pw6m7axy79aqyhp6u5q9knuu7 nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt iโm a complete noob in this area ๐
Maybe some kind of homomorphic encrypted mempool?
I just want to homestead and write open source software
Guys I think there was a misunderstanding. It's called the "halving", not the "doubling". 
What's your guess for the lowest feerate in the halving block?
Good news is that sequencers are more involved with rollup protocol design than miners are. Therefore the financial incentive for sequencers to capture all MEV and leave none to the miners should sway rollup designs towards those that protect the L1 from centralizing MEViL
Where can I get nostr stats like DAU?
works as well as previous versions... which is to say, super slow on a pi
deepweb usually means non-indexed http (normal web pages you can't find in Google), whereas darkweb refers to non-http (web pages you can't even visit without special software, usually Tor)
Why do I see this happen to so many people? How do you lose your follows?
