These days most ISPs allow self-hosting to some extent. Programmer Mira Welner has published a 15-step tutorial to getting a working static web site up and running on a Raspberry Pi:
While tutorials abound in regards to getting a basic webserver set up, there is a difference between a functional server and a good usable website. I've been working on getting my personal site set up over the course of the past five years, spending an hour or so every month working on improving the Pi. I never intended for this personal project to become so lengthy or complex, but eventually I ended up with a fairly robust system for running, maintaining, and editing my website. This tutorial will describe what I've learned throughout the process of creating this site in 15 steps, so that you can use it to create and maintain your own sites.
This tutorial assumes that you already know how to use the command line, and that you have some understanding of HTML and CSS. That is about it.
Any always-on system is going to need to draw as little current as possible, and it is hard to beat a Raspberry Pi Zero 2 W which uses under 150 mA. This tutorial stands out as better than most others because of the small details filled in necessary to go from "Hello, World" page to a working, public web site.
Previously:
(2025) AI Haters Build Tarpits to Trap and Trick AI Scrapers That Ignore Robots.Txt
(2025) A Better DIY Seismometer Can Detect Faraway Earthquakes
(2024) How the Raspberry Pi is Transforming Synthesizers
(2023) Free Raspberry Pi 4B in Abandoned Scooters
... and many more.
« Musk Complains: X Site Under Attack, and DOGE Interferes With His Job | Stars Made From Only Primordial Gas Finally Spotted »
Related Stories
https://www.tomshardware.com/news/raspberry-pi-4bs-inside-spin-scooters
When things don't work out for scooter rental companies and they shut down or pull out of a city, they usually take spare stock with them. However, when Spin backed out of Seattle, many locals discovered unused scooters scattered throughout the city. Upon closer inspection of these abandoned devices, or should we say dissection, it was uncovered that they each have a Raspberry Pi 4B inside.
This discovery was recently shared on social media. Legally, if the scooters are abandoned then snagging one for the Pi inside is fair game but it's not clear if Spin has plans to recover their remaining assets.
The Seattle city government official website confirm that Spin originally arrived in 2021 as a fourth scooter rental option. However, the company did not renew its license for the most recent cycle. Because of this, you can find a few remaining Spin scooters around the city.
Gearnews has an article about use of Raspberry Pi microcomputers in digital signal processing (DSP) systems, observing that digital synthesizers are essentially computers in specialized housings. In addition to the complex software, there is a lot of work in making an enclosure with useful controls and displays. Increasingly manufacturers are building their synthesizers around the Raspberry Pi:
The biggest synthesizer manufacturer to make use of the Raspberry Pi is Korg. The Japanese synth company's Wavestate, Modwave and Opsix digital synths all make use of the Raspberry Pi Compute Module. (They're in the module versions too.)
In an article on the Raspberry Pi home page, Korg's Andy Leary sites price and manufacturing scale as the main reason Korg decided on these components. He also liked that it was ready to go as is, providing CPU, RAM and storage in a single package. "That part of the work is already done," he said in the article. "It's like any other component; we don't have to lay out the board, build it and test it."
The software for each instrument is, of course, custom. The Raspberry Pi, however, generates the sound. "Not everyone understands that Raspberry Pi is actually making the sound," said Korg's Dan Philips in the same piece. "We use the CM3 because it's very powerful, which makes it possible to create deep, compelling instruments."
These used to be designed with off-the-shelf parts from Motorola and Texas Instruments. However around 20 years ago, according to a Raspberry Pi link about Korg synthesizers, Linux entered synthesizer production scene.
Previously:
(2024) Berlin's Techno Scene Added to UNESCO Cultural Heritage List
(2021) The Yamaha DX7 Synthesizer's Clever Exponential Circuit, Reverse-Engineered
(2019) Moog Brings Back its Legendary Model 10 'Compact' Modular Synth
(2014) History of the Synthesizer - 50 Years
Arthur T Knackerbracket has processed the following story:
This basement seismometer is relatively compact yet still sensitive enough to detect the low-frequency vibrations from distant earthquakes.
In September of 2023, I wrote in these pages about using a Raspberry Pi–based seismometer—a Raspberry Shake—to record earthquakes. But as time went by, I found the results disappointing. In retrospect, I realize that my creation was struggling to overcome a fundamental hurdle.
I live on the tectonically stable U.S. East Coast, so the only earthquakes I could hope to detect would be ones taking place far away. Unfortunately, the signals from distant quakes have relatively low vibrational frequencies, and the compact geophone sensor in a Raspberry Shake is meant for higher frequencies.
I had initially considered other sorts of DIY seismometers, and I was put off by how large and ungainly they were. But my disappointment with the Raspberry Shake drove me to construct a seismometer that represents a good compromise: It’s not so large (about 60 centimeters across), and its resonant frequency (about 0.2 Hertz) is low enough to make it better at sensing distant earthquakes.
My new design is for a horizontal-pendulum seismometer, which contains a pendulum that swings horizontally—or almost so, being inclined just a smidge. Think of a fence gate with its two hinges not quite aligned vertically. It has a stable position in the middle, but when it’s nudged, the restoring force is very weak, so the gate makes slow oscillations back and forth.
[...] Most DIY seismometers use a magnet and coil to sense motion as the moving magnet induces a current in the fixed coil. That’s a tricky proposition in a long-period seismometer, because the relative motion of the magnet is so slow that only very faint electrical signals are induced in the coil. One of the more sophisticated designs I saw online called for an LVDT (linear variable differential transformer), but such devices seem hard to come by. Instead, I adopted a strategy I hadn’t seen used in any other homebrewed seismometer: employing a Hall-effect magnetometer to sense position. All I needed was a small neodymium magnet attached to the boom and an inexpensive Hall-effect sensor board positioned beneath it. It worked just great.
Last summer, Anthropic inspired backlash when its ClaudeBot AI crawler was accused of hammering websites a million or more times a day.
And it wasn't the only artificial intelligence company making headlines for supposedly ignoring instructions in robots.txt files to avoid scraping web content on certain sites. Around the same time, Reddit's CEO called out all AI companies whose crawlers he said were "a pain in the ass to block," despite the tech industry otherwise agreeing to respect "no scraping" robots.txt rules.
[...]
Shortly after he noticed Facebook's crawler exceeding 30 million hits on his site, Aaron began plotting a new kind of attack on crawlers "clobbering" websites that he told Ars he hoped would give "teeth" to robots.txt.Building on an anti-spam cybersecurity tactic known as [tarpitting], he created Nepenthes, malicious software named after a carnivorous plant that will "eat just about anything that finds its way inside."
Aaron clearly warns users that Nepenthes is aggressive malware.
[...]
Tarpits were originally designed to waste spammers' time and resources, but creators like Aaron have now evolved the tactic into an anti-AI weapon.
[...]
It's unclear how much damage tarpits or other AI attacks can ultimately do. Last May, Laxmi Korada, Microsoft's director of partner technology, published a report detailing how leading AI companies were coping with poisoning, one of the earliest AI defense tactics deployed.
[...]
The only AI company that responded to Ars' request to comment was OpenAI, whose spokesperson confirmed that OpenAI is already working on a way to fight tarpitting.
"We're aware of efforts to disrupt AI web crawlers," OpenAI's spokesperson said. "We design our systems to be resilient while respecting robots.txt and standard web practices."
[...]
By releasing Nepenthes, he hopes to do as much damage as possible, perhaps spiking companies' AI training costs, dragging out training efforts, or even accelerating model collapse, with tarpits helping to delay the next wave of enshittification.
(Score: 3, Informative) by canopic jug on Tuesday March 11, @07:26PM (2 children)
It's still low power, but I wrote the wrong unit: the mW there should be mA
Money is not free speech. Elections should not be auctions.
(Score: 3, Informative) by mrpg on Tuesday March 11, @08:41PM
Fixed, thanks.
(Score: 4, Interesting) by ls671 on Wednesday March 12, @12:50AM
Leaving it in W and fixing the number would have been preferable IMHO since W is what you pay for in electricity. Say that PI runs on 5 V, that would be 750 mW. Or, are you talking about 150mA from the 120V outlet? That'd be 18W.
See? A is not telling much, converting in W is better IMHO but that's OK I guess...
Cheers!
Everything I write is lies, including this sentence.
(Score: 0, Informative) by Anonymous Coward on Tuesday March 11, @09:13PM (5 children)
It was on an original Pi, so I pretended it was like being on dialup
You kind of have to register on a "DDNS" service to be accessible on the WAN
(Score: 4, Interesting) by Unixnut on Wednesday March 12, @01:13AM (2 children)
Heh wow, I managed to go my entire career without ever hearing about XAMPP, and its not even a new project (launched 2002). All these years just self configuring my own web servers, I guess I never found it so taxing that I would look for a all-in-one installer to do it for me.
Still, very nice project, and no doubt helped a lot of people get basic web systems up and running and will continue to so in future, thanks for sharing!
(Score: 2) by janrinok on Wednesday March 12, @01:30AM (1 child)
Me too! But on the positive side I now know how to install and use mariadb, nginx and a host of other technologies.
I am not interested in knowing who people are or where they live. My interest starts and stops at our servers.
(Score: 2) by Unixnut on Wednesday March 12, @10:36AM
Agreed! It is a good set of skills to have :-)
And once you know how to do it, you can automate future configuration and deployments. For example nowadays I write Ansible for all config management (including home lab), so if I need a web stack I just include that role in the definition for a machine (or group of machines) and it deploys and configures the basics.
Seems XAMPP really shines in Windows, and in *nix places where you don't have root and/or want your web stack to be isolated from the OS completely, making it easy to migrate/remove/etc... As someone else mentioned on this topic, its very good for development.
When I want to do web development while on the road without internet, I've resorted to a VM with web stack installed, but that was always a bit clunky and inefficient. If I can install XAMPP in its own user on my laptop and have it host files for testing then I may have a use for it going forward. When I have some time I will dig further into it.
(Score: 4, Informative) by canopic jug on Wednesday March 12, @04:20AM (1 child)
XAMPP has its place. It is a good crutch for those that, for whatever reasons, good or bad, are on Windows instead of having upgraded to GNU/Linux. XAMPP has its place, just not on either the GNU/Linux distros or, for that matter, any non-GNU Linux distros either.
XAMPP actually gets in the way on regular GNU/Linux systems like the Debian-based Raspberry Pi OS mentioned in the fine article. The gist is that it is a non-standard approach and puts things in the wrong places, which means that documentation and forums are unable to help. There are other drawbacks, too. For basic LAMP (Linux Apache MySQL and Perl/Python/PHP) your best bet by far is to stick with the packages provided by the base system and its repository. So if you are using Debian or derivatives, use APT. If you are using Arch, use pacman. And so on.
Money is not free speech. Elections should not be auctions.
(Score: 0) by Anonymous Coward on Wednesday March 12, @04:36AM
Good for dev, not good for production.
(Score: 2, Touché) by Anonymous Coward on Tuesday March 11, @10:54PM (6 children)
I ran my first Apache with PHP2/FI back in 1997, on a 486 with 20MB of RAM and 250MB HDD, on a slackware installed from floppy disks.
Is here, on S/N, someone who doesn't know how to do it and would get something useful from TFA? Or is it slow-news-day?
(Score: 4, Insightful) by Mojibake Tengu on Tuesday March 11, @11:12PM (2 children)
Don't be so grouch. Now there are lots of funny people around the Internets, many of them younger than most of my still working computers...
Rust programming language offends both my Intelligence and my Spirit.
(Score: 0) by Anonymous Coward on Tuesday March 11, @11:28PM (1 child)
OP's post is why I've mostly stayed out of forums, discussions, etc. I have a pretty low greensite userid number, but again, so many grumpy people. I can't figure out what motivates people to post such grouchy negative tripe. Is it somehow psychologically cleansing? Sigh. Anyway, I have some computer parts older than me! (1940s - early 1960s)
(Score: 1, Touché) by Anonymous Coward on Wednesday March 12, @03:55AM
Because there's little to discuss at that basic level, Sherlock, and S/N is at least half about comments.
Hence the "Is here, on S/N, someone who doesn't know how to do it and would get something useful from TFA?"
Is something wrong with your ability to take a question at face value?
(Score: 5, Interesting) by janrinok on Wednesday March 12, @01:07AM (2 children)
Let me explain why this story is here.
I am probably much older than most people on this site; I am now well into my 70s. I used to write real-time software for avionic equipments. e.g radar, ESM, navigation. The computers that I once wrote software for did not have anything like your home computer of today for a display. These were all specialist equipments for installation in aircraft. The technology that I had to work with was from the 1960s through to the 1980s. As a hobby I started using a Z80 SBC in the 1970s, programming it manually in assembly language before moving on to assemblers, compilers and new languages such as Pascal, Modula2 and then C++. I eventually left the world of Algol and CORAL 66 behind and, by coincidence, my professional career took a very different path.
I am now having to learn HTML for the first time. It was only a few years ago that I had to configure a bog-standard server on a home computer for the first time using Nginx. So I am having to also learn css, javascript, and a host of other things for which I have never had a need in the past. I am using Bootstrap for the first time. I have to think about the UI which was never a requirement for me. The radar screen had been delivered by the manufacturer and one had to meet its requirements. I have never used PHP. I am also using GO for the first time having used Python for the last decade or so - and I love it! I have 18 computers in my home, all different, ranging from that Z80 SBC, through various Raspberry Pis, and selection of desktop and laptop computers that I have collected over the years. My choice of OS is Linux because it lets me do things in any programming language that I choose and using the hardware that I want to use.
Do not assume that everyone has had the same experiences as yourself. I know a lot of tips and techniques that were valuable skills when writing real-time software in languages you have probably never even heard of. I enjoy learning about and using technology but some might say my learning process is back-to-front, and is not following a traditional software path at all.
TFA would have been useful to me only a few years ago and probably still contains advice and information which, to me, are new.
I am not interested in knowing who people are or where they live. My interest starts and stops at our servers.
(Score: 0) by Anonymous Coward on Wednesday March 12, @03:05AM (1 child)
Got it, my apologies.
(Score: 2) by janrinok on Wednesday March 12, @04:05AM
No apologies necessary - it is unusual and it isn't the path that most people have followed....
I am not interested in knowing who people are or where they live. My interest starts and stops at our servers.
(Score: 3, Informative) by KritonK on Wednesday March 12, @06:50AM (1 child)
This article seems to provide instructions for installing the OS on the Raspberry Pi, and generic instructions on how to set up Apache, which is what I suspected from the article's title. In addition, it contains a couple of mistakes, such as not setting up the Raspberry Pi with a static local address, hoping that the address given by DHCP will not change often(!) and obtaining an SSL certificate before registering a domain name, which will not work with certbot. It also goes into a lot of detail on how to set up port forwarding using a Netgear router, which is not going to be of much use to people who would actually find this article useful, but have a different brand of router.
I think that the TL;DR from that article is that if you want to set up a web server on a low power machine, don't use third party javascript, which will probably be bloated and make your site slow. Their recommendation is to write your own javascript. The recommendation of SN readers would probably be to not use any javascript at all; do you really need javascript for a static site?
(Score: 3, Informative) by canopic jug on Wednesday March 12, @07:31AM
You'll never need javascript on a static site. It is "useful" on web apps where HTTP is used to deliver a bloated program to the client to exploit the browser as an inefficient, insecure virtual machine. On a static site, you can do formatting, layout, and a bit of interactiveness using CSS.
If the static site is larger, one way to accomplish standardized menus, headers, footers, and other repeating information would be to ratchet up to Server-Side Includes [apache.org]. Apache2 can do them "NOEXEC" but Nginx only allows "EXEC" equivalent. However if you are the only one using the device then exec/noexec is not an issue.
Money is not free speech. Elections should not be auctions.
(Score: 2) by boltronics on Wednesday March 12, @08:25AM (1 child)
The Pi should be hosting all of the e-mail too! :)
I also use a Pi for my router, so would have been good to see instructions for that instead of for a generic Netgear device. That might also be a better place to run fail2ban, so you're dropping traffic right from the router. However, it would need to be one of the more powerful Pis (I use a 4b for my router with a USB dongle).
The few occasions I've had to call my ISP to complain of an outage, and they ask about my router, they just love it when I tell them it's a Pi. It really brightens up their day.
Or not.
Anyway, better to have the Pi on a DMZ, isolated from the rest of the home network as much as possible. For this I use VLANs and a cheap layer 3 switch.
I appreciated the reference to Ghostty, which I'd never heard of. For years I was using Terminator, but then since switching to KDE Plasma a few years back, I've put up with Konsole, although I've never truly enjoyed using it. The way it splits all cells in a row or column evenly (as opposed to just adjusting the one you are splitting) and the lack of control around split focus has always bugged me. However Ghostty is as fast as Konsole and behaves closer to Terminator, so I'm going to give it a try. I do wish it was using Qt though, so I might go back to Konsole... but I may not notice the Gtk bits at all if I avoid using tabs or right-clicking, so I will see.
The goto_split keybind is still not as good as Terminator where you can tell it to focus on the split in a given direction from the current focus, but at least it follows a very predictable pattern (as opposed to Konsole which is based on split history, and even traverses different tabs and I often find myself reaching for the mouse just to avoid that insanity!) so fingers crossed it works out. I see there is also discussion around a potential Qt fork on Ghostty's GitHub page, so fingers crossed for that.
It's GNU/Linux dammit!
(Score: 4, Interesting) by boltronics on Wednesday March 12, @08:39AM
To see the split selection options I was using:
$ ghostty +list-actions
but I really should have done this first:
$ ghostty +show-config --default | grep ^keybind | grep split
keybind = ctrl+alt+up=goto_split:up
keybind = super+ctrl+right_bracket=goto_split:next
keybind = ctrl+shift+o=new_split:right
keybind = super+ctrl+shift+up=resize_split:up,10
keybind = super+ctrl+shift+equal=equalize_splits
keybind = ctrl+alt+left=goto_split:left
keybind = super+ctrl+shift+left=resize_split:left,10
keybind = ctrl+alt+down=goto_split:down
keybind = super+ctrl+shift+down=resize_split:down,10
keybind = super+ctrl+shift+right=resize_split:right,10
keybind = ctrl+shift+e=new_split:down
keybind = ctrl+alt+right=goto_split:right
keybind = ctrl+shift+enter=toggle_split_zoom
keybind = super+ctrl+left_bracket=goto_split:previous
$
and there it is. I just need to add multiple keybindings for keybind with :left, :right, :up, or :down at the end to something that doesn't conflict with my Plasma desktop environment setup. Okay, this is great. Thanks. I give the tutorial 10/10 just for this.
It's GNU/Linux dammit!
(Score: 4, Interesting) by RamiK on Wednesday March 12, @09:01AM
Here's an 22 years old tutorial on how to serve html with an 8051: https://www.8051projects.net/files/public/1298210567_20897_FT45051_build_your_own_8051_based_embedded_web_server_.pdf [8051projects.net]
And here's a few months old commercial managed switch (8-port 2.5GbE with 10GbE SPF) using an RTL8373 with its built-in 8051 to serve the interface over a web page: https://www.cnx-software.com/2024/11/11/inexpensive-ampcom-8-port-2-5gbe-managed-switch-with-10gbe-spf-cage/ [cnx-software.com]
compiling...
(Score: 2) by Rich on Wednesday March 12, @02:01PM (1 child)
I guess steps 5 "certbot" and 6 "domain name" have to be exchanged. The certificate is for the domain name, after all. Also putting a link to "certbot" as "easy step" is a bit cheap. I also found the part about the domain name for the external IP somewhat confusing. In my case, I used to have a VIA C3 machine that connected over PPPoE and handled firewalling itself. Now they "updated" me to a router that won't (easily?) do PPPoE and insists on being the NAT and DHCP host. I relented, took the C3 out to save electricity and set up port forwarding to a Pi 3.
The router knows some preset dynamic IP providers, but not mine, with its established address. So the Pi has to do that. I haven't found ways to extract the external IPv4 from the router, trivial ones at least. I could open an https session, navigate to the status and scrape the external IP. But I was a little lazy, so I wrote a python script that pings some what-is-my-ip service that just returns the IP text and is easy to parse every two hours or so, and calls the dynamic service after a change (or once within 48 hours). TFA could be a bit clearer here.
By the way, my setup isn't entirely static, to replace FTP and get some hands-on experience, I have written a little CGI script that will accept an uploaded file.
(Score: 2) by crm114 on Wednesday March 12, @03:00PM
Heh ... VIA C3 ... you are really old-school. Respect from me.
I have a pile of C7's to use as spares. Most of our home is VIA Nano's (all of which are End-of-Life ... but they keep working, and working, and working.)
In the x86.* world, VIA was my choice over Intel or AMD. They actually did prove you can do more with a small team.