下面文章已经过时,新版在「技焉洲」更新: 分享我使用两年的极简 网页记事本 – 技焉洲 (vfly2.com)
放在新站点「技焉洲」的原因: 承飞之咎与技焉洲 – 承飞之咎 (vfly2.com)
若无单独说明,按照文章代码块中命令的顺序,一条一条执行,即可实现目标。
适用系统:Debian 系发行版,包括 Ubuntu 和 Armbian,其他发行版按流程稍改命令一般也可。走通预计时间:10 分钟(Docker) 或 25 分钟(原生部署)
可以访问这个实例: https://forward.vfly.app/index.php ,试试怎么样,公开使用的网页记事本。
minimalist-web-notepad
这个网页记事本是我 2 年前玩机子初期的一大驱动力。当时主要从手机上浏览信息,刚转变到在电脑上处理信息,需要一种简便的渠道在两者之间传递文本、网址。
网盘太重,微信需要验证,tg 很好,但在找到这个记事本后,都是乐色,这就是最好的全平台传递文本的工具。
极简 网页记事本,是一个使用浏览器访问的轻量好用的记事本,专注于文本记录。
Github:pereorga/minimalist-web-notepad: Minimalist Web Notepad (github.com)
使用方法:
- 访问网页: https://forward.vfly.app/index.php
- 它会随机分配 5 个字符组成的地址,如 https://forward.vfly.app/5b79m ,如果想指定地址,只需要访问时手动修改,如 https://forward.vfly.app/this_is_a_path 。下面以 5b79m 为例。
- 在上面编辑文本
- 等待一会(几秒,取决于延迟),服务端就会存储网页内容到名为
5b79m
的文件里。 - 关闭网页,如果关闭太快,会来不及保存,丢失编辑。
- 在其他平台再访问同样的网址,就能剪切内容了 ٩۹(๑•̀ω•́ ๑)۶
只要不关闭过快和在两个网页同时编辑,它都能很好地工作。因为极简,项目作者不会考虑增加多余功能。
在远控其他电脑时,用这个先传递命令,在目标电脑上使用,非常方便,而且适应性强。多个手机之间也一样。或者用于临时传送敏感数据,避免受到平台审查。
使用 Docker 安装 网页记事本
GitHub 的 Docker 分支: pereorga/minimalist-web-notepad at docker (github.com)
Docker 分支很久没更新了,文章最后一节是「解析 minimalist-web-notepad 的 Docker 分支」,可以参考从而使用最新版主分支创建 Docker 镜像。
官方 Docker 分支的部署
全复制并执行,一键创建工作目录并开放端口
myserve="webnote"
sudo ufw allow 8088/tcp comment $myserve && sudo ufw reload
cd ~/myserve/
wget https://github.com/pereorga/minimalist-web-notepad/archive/refs/heads/docker.zip
unzip docker.zip && mv minimalist-web-notepad-docker webnote
cd webnote
根据注释自定义,然后执行,一键创建 docker-compose.yml 文件
cat > docker-compose.yml << EOF
---
version: "2.4"
services:
minimalist-web-notepad:
build: .
container_name: webnote
restart: always
ports:
- "8088:80"
volumes:
- ./_tmp:/var/www/html/_tmp
EOF
前面的 5b79m
就存储在 _tmp
中。
构建并启动容器(完成后就可以访问网页了,通过 http://ip_addr_or_domain:8088
访问。将 ip_addr_or_domain
替换为服务器的 IP 或域名)
docker compose up -d
AhFei 构建的镜像部署
Docker 分支使用的基础镜像太大了,了解 PHP, httpd, alpine 的也可以参考下面的原生安装和对 Docker 分支的解析,创建 alpine 镜像,我没有创建成功。
下面是 AhFei 使用主分支构建的镜像。
myserve="webnote"
sudo ufw allow 80/tcp comment $myserve && sudo ufw reload # 这里改用 80 端口,与前文不同
mkdir -p ~/myserve/$myserve && cd ~/myserve/$myserve
cat > docker-compose.yml << EOF
---
version: "2.4"
services:
minimalist-web-notepad:
image: ahfeil/minimalist-web-notepad:latest # 这里改用 ahfei 的镜像
container_name: webnote
restart: always
ports:
- "80:80"
volumes:
- ./_tmp:/var/www/html/_tmp
environment:
# 这个用来指定访问记事本的域名,请自定义,或者注释掉不指定
- MWN_BASE_URL=http://webnote.vfly2.com
# 不指定的话,使用任何域名包括直接用 IP 都能访问,不太安全
# 如果端口不是 80 ,比如是 8088,则要加上端口,如 http://webnote.vfly2.com:8088
EOF
docker compose up -d
像这样的配置,启动容器后,访问 http://webnote.vfly2.com 就能使用了。
为什么不提交 push 呢?
Docker 分支的结构不合理,不方便提交,另外,也不是什么大的改进。
原生安装 网页记事本
下面以域名 http://forward.vfly.app 为例。
安装 Apache2 和 PHP
sudo apt update && sudo apt upgrade && \
sudo apt install apache2
# sudo systemctl status apache2 # 检查状态
sudo apt install php libapache2-mod-php
访问 http://YOUR_IP_or_Domain/
可以验证 Apache 是否正常工作,如果能看到欢迎页。
安装 PHP 后,重启 Apache 以加载 PHP module:
sudo systemctl restart apache2
检测 PHP 安装:
sudo bash -c 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php'
访问 http://YOUR_IP_or_Domain/phpinfo.php
可以验证 php 是否安装成功。
如果不显示具体参数,只是空白页,左上角有一行 <?php phpinfo(); ?>
,多半是 PHP 模块没能在 Apache 成功开启,可能是与 MBM 模块冲突,无法开启,请自行询问 ChatGPT 或其他方式解决。
说个自己的经历。从 porkbun 白嫖的 .app 域名,用来解析这个服务的时候,怎么都打不开,还总是跳 HTTPS ,老半天才知道, .app 和 .net 似乎只能 HTTPS 。
创建目录和下载原文件
cd /var/www/ && \
sudo git clone https://github.com/pereorga/minimalist-web-notepad.git
# 改名并将目录赋予用户 www-data 以拥有读写权限
sudo mv minimalist-web-notepad webnote
sudo chown -R www-data:www-data /var/www/webnote
修改 $base_url = 'http://forward.vfly.app';
就在第四行,必须修改为访问时的域名,如果后面要加 SSL,这里也要对应修改为 https 。
cd /var/www/webnote && sudo vim index.php
创建虚拟主机
如果要用 https,跳过这节,直接看下面一节
进入可用虚拟主机目录,复制示例配置文件,并编辑
cd /etc/apache2/sites-available
sudo cp 000-default.conf web-notepad.conf
sudo vim web-notepad.conf
保证有下面的两行即可,记得修改域名和目录。
ServerAdmin <邮箱随意>
ServerName forward.vfly.app
DocumentRoot /var/www/webnote
还要添加下面这部分
<Directory /var/www/webnote>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
启用虚拟主机
sudo a2enmod rewrite # 开启mod_rewrite,
sudo a2ensite web-notepad.conf # 启用虚拟主机
sudo systemctl reload apache2 # 重启apache2生效
这样就可以使用了,浏览器访问:http://YOUR_Domain/index.php
。
SSL
申请证书时,要使用root: sudo -i
,实际部署时,记得修改域名。
安装并启用acme.sh脚本(/home/skf/.acme.sh/acme.sh)(改邮箱)
apt install -y curl && curl https://get.acme.sh | sh -s email=vgamebox@outlook.com && cd ~ && source .bashrc
切换证书签发机构
acme.sh --set-default-ca --server letsencrypt
签发证书(改域名)
acme.sh --issue -d forward.vfly.app --apache
安装证书(改域名)
acme.sh --install-cert -d forward.vfly.app \
--cert-file /etc/ssl/certs/forward.vfly.app.cer \
--key-file /etc/ssl/private/forward.vfly.app.key
开启acme.sh自动升级
acme.sh --upgrade --auto-upgrade
可以退出 root 用户了。
进入可用虚拟主机目录,复制另一个默认的,并编辑
cd /etc/apache2/sites-available
sudo cp default-ssl.conf ssl-webnote.conf
sudo vim ssl-webnote.conf
保证有下面的两行即可,记得修改域名和目录。
ServerAdmin <邮箱随意>
ServerName forward.vfly.app
DocumentRoot /var/www/webnote
还要添加下面这部分
<Directory /var/www/webnote>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
还有编辑证书位置
SSLCertificateFile /etc/ssl/certs/forward.vfly.app.cer
SSLCertificateKeyFile /etc/ssl/private/forward.vfly.app.key
启用虚拟主机
sudo a2enmod rewrite ssl # 开启mod_rewrite,ssl
sudo a2ensite ssl-webnote.conf # 启用虚拟主机
sudo systemctl reload apache2 # 重启apache2生效
这样就可以使用了,浏览器访问:https://YOUR_Domain/index.php
。
如果出现文本框很小的情况,那是
$base_url
的没从 http 改成 https 。
迁移
数据都在 /var/www/webnote/_tmp
中,在新机子上重新部署一遍,复制这个目录到新机子上即可。
其他
如要开启认证访问。 编辑网站根目录下的.htaccess,去掉末尾四行的注释。
cd /var/www/webnote && sudo vim .htaccess
这四行取消注释
# AuthType basic
# AuthName "website.name"
# AuthUserFile "/var/www/webnote/update-path-to.htpasswd" # 这里的路径自定义
# Require valid-user
再创建文件
sudo touch /var/www/webnote/update-path-to.htpasswd
然后添加账户即可(记得改 username,会提示输密码)
sudo htpasswd -c /var/www/webnote/update-path-to.htpasswd username
如要添加第二个,不要加-c,否则会覆盖第一个
其他类似项目
浏览器便签
很不错的项目,简单,虽然项目不更新了,但是功能基本完成。
GitHub: jonathontoon/manifest: An instant grid-based pinboard for note taking in your browser. (github.com)
Hasty Paste
一个文本粘贴工具,看着不错,有高亮,适合分享代码。
GitHub:enchant97/hasty-paste: A fast and minimal paste bin. (github.com)
解析 minimalist-web-notepad 的 Docker 分支
相比主分支, Docker 分支有四个新增的文件
- Dockerfile
- docker-compose
- minimalist-web-notepad-entrypoint
- notes.htaccess
利用最新版主分支,构建镜像的步骤如下:
前置准备
下载最新版主分支
wget https://github.com/pereorga/minimalist-web-notepad/archive/refs/heads/master.zip
unzip master.zip && rm master.zip
mv minimalist-web-notepad-master webnote
cd webnote
修改 index,改这两行为下面的
vim index.php
$base_url = getenv('MWN_BASE_URL') ?: '';
$save_path = getenv('MWN_SAVE_PATH') ?: '_tmp';
一键修改
sed -i "s/\$base_url = 'https:\/\/notes.orga.cat';/\$base_url = getenv('MWN_BASE_URL') ?: '';/g; s/\$save_path = '_tmp';/\$save_path = getenv('MWN_SAVE_PATH') ?: '_tmp';/g" ./index.php
创建 notes.htaccess (主分支目前已包含这个)
cat > notes.htaccess << EOF
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
</IfModule>
EOF
创建 entrypoint 文件
vim minimalist-web-notepad-entrypoint
#!/bin/sh
set -e
# Create save path
case "${MWN_SAVE_PATH:=_tmp}" in
/*) NOTES_PATH="$MWN_SAVE_PATH" ;;
*) NOTES_PATH="/var/www/html/$MWN_SAVE_PATH" ;;
esac
mkdir -p "$NOTES_PATH"
cp "/var/www/html/notes.htaccess" "$NOTES_PATH/.htaccess"
chown -R www-data:www-data "$NOTES_PATH"
# Run default entrypoint
exec docker-php-entrypoint "$@"
赋予执行权限
chmod +x minimalist-web-notepad-entrypoint
"$@"
是一个特殊变量,用于将在容器启动时传递给docker-php-entrypoint
脚本的所有命令行参数传递过去。例如,如果在运行容器时使用以下命令:
docker run -it my_image arg1 arg2
那么
"$@"
将被展开为arg1 arg2
,并作为参数传递给docker-php-entrypoint
脚本。这样可以确保容器内部的入口脚本能够正确处理传递的参数。
Dockerfile
先拉取基础镜像: php Tags | Docker Hub
docker pull php:7.4-apache
# docker run -it --rm php:7.4-apache bash
# 可以知道默认 workdir 是 /var/www/html
vim Dockerfile
FROM php:7.4-apache
# Import App and entrypoint file
COPY .htaccess index.php styles.css script.js favicon.ico favicon.svg notes.htaccess minimalist-web-notepad-entrypoint ./
# Set PHP configuration to production, then Set entrypoint for permissions
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini && \
mv minimalist-web-notepad-entrypoint /usr/local/bin/ && \
a2enmod rewrite && \
rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["minimalist-web-notepad-entrypoint"]
CMD ["apache2-foreground"]
构建镜像
docker build -t ahfeil/minimalist-web-notepad:latest .
删除重建
docker stop webnote && docker rm webnote && docker rmi ahfeil/minimalist-web-notepad:latest
docker-compose.yml 文件中,把 build: .
换成 image: ahfeil/minimalist-web-notepad:latest
即可
原文链接: https://blog.vfly2.com/2023/08/a-minimalist-web-notepad-used-for-two-years/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 承飞之咎 (blog.vfly2.com) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰可重复的实用技能,欢迎使用 RSS 订阅,也欢迎留言指正。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。
没有 RSS 订阅器的话,也可以关注公众号:承飞之咎 了解最新内容。
如果是在网上暂存一份文本的话,可以看看这个项目. 不需要自己的服务器, 使用CloudFlare的免费的woker和KV.
https://github.com/crazypeace/Url-Shorten-Worker
演示站: https://pastebin.icdyct.cloudns.asia/tieludasiliqiuweiyue
演示视频: https://www.youtube.com/watch?v=toBeb3DNpZc
搭建教程: https://www.nodeseek.com/post-58723-1
这个项目更新了支持markdown的形式
演示站:https://journal.crazypeace.workers.dev/journaljournal
演示视频:https://www.youtube.com/watch?v=DZcXqyIm_R0
搭建教程:https://zelikk.blogspot.com/2022/07/url-shorten-worker-hide-tutorial.html