Note: in Blog3000.Client.csproj the change to ItemGroup/ServiceWorker was not documented in MS-docs, but reverse engineered from a fresh created project, since MS-build was complaining. |
||
|---|---|---|
| .. | ||
| .config | ||
| Controllers | ||
| MiddleWares | ||
| Properties | ||
| Utils | ||
| app_data | ||
| wwwroot | ||
| Blog3000.Server.csproj | ||
| BlogEnv.cs | ||
| BlogPostRepo.cs | ||
| Program.cs | ||
| README.md | ||
| Startup.cs | ||
| TODO.txt | ||
| appsettings.Development.json | ||
| appsettings.json | ||
| libman.json | ||
README.md
Blog3000
Alpha Prototype software
Simple blog software with(out) following features
- Written in .Net core
- Using blazor on the client (C# instead of javascript!!!!)
- Using ASP.NEt Core on server
- Caches all blog-data in the browser for offline use.
- Installable PWA
- Simple view-stats
- Serverside Search-Robot-Support for bing/google
- BlogPosts are stored as MarkDown. Images are supported. Can be edited by blogger directly on server. Markdown is enahanced with tags in the first lines "@" providing metadata and id
Install / Configure
TODO
Markdown header format
TODO
Parameters
Start Server without parameters to get a parameter list/help
Runing on Linux (Gentoo)
Config
Use blogconfig.json from www-root as template and copy to your blog-data-path. Modify as neeed. To Set value in protected start server without parameters to see commandline-parameters therefore.
Init-script
#!/sbin/openrc-run
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
depend() {
need net
use dns logger
after apache2
}
configtest() {
ebegin "Checking ${SVCNAME} configuration"
eend $?
}
start() {
ebegin "Starting ${SVCNAME}"
nohup -- su -s /bin/bash blogmh3000 -c "(cd /var/www/blog-mh3000-net/server/exe && /opt/dotnet31/dotnet Blog3000.Server.dll --blog-data-path=/var/www/blog-mh3000-net/server/data | logger -t blogmh3000 )" > /dev/null &
eend ${retval}
}
stop() {
ebegin "Stopping ${SVCNAME}"
kill `ps ax | grep Blog3000 | grep " /opt/dotnet31" | grep -v "bash" | cut -b 1-5` || exit ß
}
Syslog-ng
Add this somewhere before the log(message)-lines.
# Blog
filter f_blogmh3000 { program(blogmh3000); };
destination dest_blog3000 { file("/var/log/blogmh3000.log"); };
log { source(src); filter(f_blogmh3000); destination(dest_blog3000); flags(final);};
Rename according to your own names. Note: the program() filter equals the | logger -t [PROGRAM] in the initscript above.
Logrotate
Add as /etc/logrotate.d/blogmh3000:
/var/log/blogmh3000.log {
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/syslog-ng reload > /dev/null 2>&1 || true
endscript
}
As before, rename according to your own names.
Further notes
Downloads
Currently a very rough feature for offering downloads from the blog is available: The authors can put files on a cdn/ftp/public website, and reference them via the "/PublicDl". The server then is called with the filename and returns the actual url to the actual download site. This would allow download-counting or one-time url for protected downlodas in the future.
No sub-folder are supported at the moment.
Downloads may not reside in the same domain, otherwise router-module of the blog-app may take over and return 404.
Perhabs in the future a javascript base downloader may resolve this issue and allow file living in the blogs url-space for more easness.
Testing SEO output
with testbox enabled e.g. use wget
wget -O - --header="User-Agent: xx-testbot-xx" --no-check-certificate https://local-ip:5001/
(C) 2020 Michael Hoess, MIT-License