当后面的车子的完整车头出现在后视镜内侧的2/3范围内,此时你离后车大约15米左右。
-当后面的车子的完整车头出现在后视镜的中央时,此时你离后车大约10米左右,这是安全距离了,观察2次后视镜(间隔2-3秒),如果其车头大小维持不变,说明跟你的车子基本上同速,此时,稍微加速(轻踩油门,然后松开油门),方向盘转动0.5-1厘米即可安全变道。
gg.gg/13nbnz gg.gg/13p5tj gg.gg/13p9s5 gg.gg/13tljl gg.gg/13xudz gg.gg/13xy3p gg.gg/143tqc linux.die.net linux.it.net.cn ostechnix.com unix.com gg.gg/19yv96 gg.gg/1bv5v3 man.linuxde.net gg.gg/148erg bit.ly/2vsM34J bit.ly/2EzoUDo gg.gg/1c3of3 bit.ly/2v6jGJi bit.ly/2tW6eYT gg.gg/1bzayz gg.gg/1bzazg bit.ly/2X6vadl bit.ly/2viLpHU linuxprobe.com linuxtechi.com systutorials.com ghacks.net linuxopsys.com reurl.cc/8W1x3X reurl.cc/NpzMWe reurl.cc/WrgYdx reurl.cc/Yv4Yvo reurl.cc/Lmy90K reurl.cc/Rr5aeG
当后面的车子的完整车头出现在后视镜内侧的2/3范围内,此时你离后车大约15米左右。
-当后面的车子的完整车头出现在后视镜的中央时,此时你离后车大约10米左右,这是安全距离了,观察2次后视镜(间隔2-3秒),如果其车头大小维持不变,说明跟你的车子基本上同速,此时,稍微加速(轻踩油门,然后松开油门),方向盘转动0.5-1厘米即可安全变道。
這首曲子是由日本的音樂者 宗次郎先生所做的.
曲子本身是非常道地的中國曲風 .日本在藝術方面的表現讓我印象最深刻的就是禪風 ,而禪風對我來說是一種現代的寧靜的心靈境界, 與古代中國山水壯闊高遠飄渺很相似卻不那麼相同. 故鄉的原風景是讓我一聽到就讓我的思緒 像是帶著深深的思念 飄渺在高山峻嶺中的雲. 風. 霧..... 我只有兩個字 ~ 讚嘆 ~
Omega coin is a powerful mode-based PoW + PoS-based cryptocurrency.
Block Spacing: 80 Seconds Stake Minimum Age: 8 Hours
Port: 7777 RPC Port: 7778
git clone https://github.com/omegacoinnetwork/omegacoin
cd omegacoin
./autogen.sh
./configure
make
make install
strip omegacoind
sudo cp omegacoind /usr/local/bin
from https://github.com/kwchmines/omegacoin
Here’s just a few articles from Unix Tutorial:
Use visudo to check sudo config syntax: you can and should be double-checking any changes made to /etc/sudoers and its include files, because they may be the only way for you to become a superuser.
sudo command – just the basics of using sudo
How to use visudo – a brief guide on the interactive use of visudo command
from https://web.archive.org/web/20231004200627/https://www.nuxified.org/article/advice-on-using-sudo/
USB memory sticks are replacing the DVD as the go to method of installing Linux, but what if you find yourself in that rare situation of having access to neither? There is a way, and even if you don’t particularly need it, it’s a great learning experience that could come in handy.
What you don’t need is a DVD or an USB drive. What you do need is an existing Windows installation and access to the internet, plus the following:
This is the process in a nutshell:
You can use any good partitioning tool for this, like Partition Magic or AOMEI Partition Assistant Home Edition. The key is to have some unused space on your hard drive where you can put the Linux partitions. If you don’t you can resize an existing partition to make space and then create a new partition in the newly unused space.
This isn’t the partitioning guide, but while you do need to be careful not to nuke the wrong thing with this the process is ultimately really simple. Both of the mentioned tools, for example, present things visually in a way that makes it hard to do something stupid like, say, erase your C:/ where your Windows is installed.
What you need to create are two partitions. One should be around 15GB to 20GB or more, of the ext4 type, and the other should be 512MB to 1024MB as a swap partition.
You should end up having something like this:
The selected partition is the Linux partition, and the “Unformatted” one is used as swap. It doesn’t need to be formatted as Linux does that automatically. You just need to tell it what to use as swap.
Once you’ve got these partitions ready you can move on to the next step.
Windows can’t read Linux partitions on its own, as it doesn’t support the Ext3 or Ext4 partitions (nor most of the others). It doesn’t have the drivers for it. That’s where Ext2Fsd comes in. It’s the driver that allows Windows to read and write to Ext3 and Ext4 partitions.
Download it, install it, and you should have an Ext2 Volume Manager among your apps. Launch that, and if your new Ext3 partition isn’t visible in your Windows Explorer already you can double click on it in Ext2 Volume Manager and set a mountpoint for it. It should look something like this:
You may have to reboot after hitting Apply. And then you can proceed to copying some files on the newly available Linux partition.
Go to the Ubuntu netboot archive, click on the desired Ubuntu version (like Ubuntu 14.10 (Utopic Unicorn) at the time of this writing), then your processor architecture (like amd64 or i386 depending on whether you’re on a 64bit or 32bit system), then the ubuntu-installer folder, and the amd64 or i386 in it. Finally you should be on a path like this: /ubuntu/dists/utopic/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64
There you need to download two files: initrd.gz and linux. They’re quite small.
When you have these go to your new Linux partition, create a “boot” directory on it, and put those files there.
Now you’ve got a simple boot environment set up. What these two files contain are, in fact, the Ubuntu installer and the boot process for it!
NeoSmart offers this super smart tool called EasyBCD that allows you to install bootloaders to boot just about anything. To download it go to the EasyBCD website, scroll down, and you should see the option to Register to download for free, or buy the program. The free version is for non-commercial use only.
Once you’ve downloaded, installed, and launched EasyBCD you can see the existing bootloader settings. You just need to follow these simple steps to add a bootloader for our new Ubuntu install boot that we’ve set up in a previous step:
That should give you a working bootloader with two options; the standard Windows option, and the new Linux boot option that should get you installing Ubuntu. It loads an AutoNeoGrub utility that scans your partitions for the Linux boot files like the ones we set up.
If for some reason it fails to find it you can go back to BCD and add a new NeoGrub entry where you can specify the exact location of your boot files.
Just go to Add New Entry as above, and then to the NeoGrub tab. There click the Install button, and then the Configure button to open the configuration file.
In the configuration file add these lines:
title Ubuntu find --set-root /boot/linux kernel /boot/linux ro root=/dev/sda5 initrd /boot/initrd.gz</code><code>title Ubuntu 2 root (hd0,4) kernel /boot/linux initrd /boot/initrd.gz |
This will give you two options when you boot into NeoGrub, and one of them should work. Make sure to replace /dev/sda5 and (hd0,4) with the location of your Linux partition. You can check Ext2 Volume Manager mentioned before for the right number of your partition. In the (hd0,4) entry it counts from zero so if it is the Volume5 it should be (hd0,4), and if it is Volume4 it should be (hd0,3) while the /dev/sda5 entry corresponds to Volume5.
Chances are you wont need these manually added entries, and that the automatic AutoNeoGrub entry added before will find your boot files right away and boot them when you reboot.
After rebooting you should see a choice between Windows, Linux, and NeoGrub if you’ve added the manual lines. Select “Linux” (or whatever you called it), and it should reboot into Ubuntu install.
This is the stanard text graphics based installer that will ask you for your language, location, keyboard mapping, timezone, and install a base system. You can then choose to install extra software on top of it, like Ubuntu Desktop for a full Ubuntu installation.
The details of the install process is beyond the scope of this article. Just make sure that when you get to the partitioning step you choose “Manual” so you can select your Linux and swap partitions to install on instead of overwriting your entire hard drive!
Ubuntu will install its own GRUB bootloader during setup, and it will contain the Windows boot option as well so you should at this point have a dual boot setup on your PC between Windows and Ubuntu.
from https://web.archive.org/web/20231209172537/https://www.nuxified.org/article/how-install-ubuntu-linux-without-dvd-or-usb/
If you have an iPhone, then you can easily check who hung up on you. This guide will help you understand how to view the call history of your iPhone to find out which contact hung up on you. With a few simple steps, you can quickly find out who called and then hung up on you.To see who hung up on an iPhone, open the Phone app and select the Recents tab. This tab shows all recent calls made to and from your device. Scroll through the list of calls to find the one that you believe was hung up on you. Tap on it for more details about the call, such as when it started and ended, as well as the duration of the call. If the “Call Ended” time is before you expected it to end, then that means that someone hung up on you during the call.
The Caller ID on your iPhone allows you to know who is calling before you answer. It displays the name and number of the caller, so you can make an informed decision on whether or not you want to answer the call. To use Caller ID, you must first enable it in your settings.
To enable Caller ID, open the Settings app and tap Phone. Then tap Show My Caller ID and make sure it is turned on. You will then be able to view the caller’s name or number when they call you.
If a caller has blocked their caller ID from being displayed, then it will appear as “Unknown” or “Private Number” when they call. To prevent this from happening with your own calls, go back into the Phone settings and turn off Show My Caller ID. This will cause your calls to appear as “Unknown” or “Private Number” when someone else receives them.
You can also set up a whitelist of contacts whose calls will always display their name and number even if their caller ID is blocked. To do this, go back into Phone settings, tap Show My Caller ID, and then choose Whitelist Contacts from the list of options. Select any contacts that you want to be able to always see their caller information when they call and then save your changes.
With these easy steps, you can now easily understand who is calling you using your iPhone’s Caller ID feature!
If you need to know who hung up the phone without speaking to them, you can use call details to find out. Call details are a record of each call that is made and received, including who called and who answered. It also includes the duration of the call and the time it was made or received. With this information, you can easily see who hung up without speaking.
Often times, when someone hangs up an incoming call without speaking, it is because they do not recognize the caller or are not interested in the conversation. Looking at their call details can help provide insight into why they hung up. For example, if a person receives multiple calls from the same number in a short amount of time, they may be more likely to hang up because they are not interested in what is being offered. Knowing this information can help you adjust your strategy moving forward.
Call details can also be used to see if someone has been avoiding your calls. If you notice that a person has consistently hung up after receiving your calls, it may be wise to change your approach. You can use this information as an opportunity to try something different in order to get through to them.
Overall, call details are an invaluable tool for seeing who hung up without speaking and why they chose to do so. By keeping track of these records and using them strategically, you can gain valuable insights into how people interact with your business or organization.
If you need to take a look at your recent missed calls on an iPhone, there are several ways to do so. The simplest way is to open your Recents tab in the Phone app, which will display all the phone numbers that have called you within the past 30 days. This list shows all incoming and outgoing calls, including those that you missed. You can also view a more detailed list of your recent call history by opening the Recent tab under Voicemail in your Phone app. This will show you all of your missed calls from the past few days. You can also view individual contacts’ recently missed call logs by going into their contact card and selecting “Calls” from the drop-down menu.
If you’re looking for even more detailed information about a particular call, such as when it happened or who initiated it, then you may need to use a third-party app like Call History Tracker or Call Log Pro. These apps allow you to view an even more detailed list of your recent call history and are useful for tracking business or personal calls. They also provide additional features such as displaying information about each call and allowing you to manage and export your call logs.
In summary, there are several ways to view recently missed calls on an iPhone. The simplest way is to go into your Recents tab in the Phone app, which will give you a basic list of all incoming and outgoing calls over the past 30 days. You can also go into individual contacts’ contact cards and select “Calls” from the drop-down menu for more detailed information about their recent calls with you. Finally, if you need even more detailed information about a particular call then consider using a third-party app like Call History Tracker or Call Log Pro for advanced features such as exporting and managing your call logs.
If you’re trying to figure out who hung up on you during a call on your iPhone, there are a few troubleshooting steps you can take. First, check your recent call log to see if the incoming call was saved. If it was saved, the caller’s name or number should be listed there. If not, then you’ll need to open your Recent Calls list and check for the incoming call. If you still don’t see the call in either of these places, then it’s likely that the caller hung up before the call was logged.
You can also try calling back the number that called you to see if it’s a valid phone number and who is associated with it. If you know the person who called you, then this may be an effective way to find out who hung up on you.
Finally, if none of these methods work and you still can’t figure out who hung up on you, contact your phone carrier and ask them for assistance. They should be able to look up information about incoming calls made to your phone and provide more insight into who called you and why they hung up so quickly.
Most people have experienced the frustration of not knowing who called or hung up on their phone. Fortunately, there are several third-party apps that can help you find out who hung up. These apps can be used to track anonymous calls and even trace the caller’s identity.
One of the most popular third-party apps is TrapCall. This app can be used to unmask blocked or unknown numbers, so you know exactly who called you. It also offers an enhanced caller ID feature that will tell you the name and location of a caller before you answer the phone. The app also has an auto-blocking feature that will block numbers from calling your phone again after they have been identified.
Another app that can be used to see who hung up is Truecaller. This app not only allows users to track anonymous calls, but it also allows them to identify callers by name, location, and even email address. It also has a caller ID feature that provides users with detailed information about the person calling them, including their name and address. Additionally, Truecaller features a “Do Not Disturb” mode that prevents unwanted calls from coming through.
Finally, there is Reverse Phone Lookup by Number Lookup. This app allows users to look up any number in the United States or Canada and see its originator’s contact information and other details about the person who made the call. The contact information provided includes their name, address, phone number(s), email address(es), social media profiles, and more.
Overall, these third-party apps are great tools for finding out who called or hung up on your phone. They provide users with detailed information about callers and help them protect their privacy by blocking unwanted calls from coming through again in the future.
It can be frustrating not knowing if you’ve been blocked from calling someone. But there are a few tell-tale signs that you can look out for if you think that your number has been blocked. Firstly, if your calls go straight to voicemail without ringing at all, it could be an indication that the call has been blocked. Additionally, if you’re able to leave a voicemail but never receive a response, it could also mean that your calls have been blocked.
If you’re using an iPhone to make the call and you have iMessage enabled, it’s worth checking to see if your messages are being delivered. If they’re being sent as texts instead of using iMessage, then it could mean that your number has been blocked from calling or texting. Similarly, if someone sends you a text message and it’s not delivered with the usual ‘Delivered’ message underneath the text bubble, then this could also indicate that your number has been blocked.
If all else fails and you still don’t know whether or not someone has blocked your number, then the best thing to do is ask them directly. They may be more open to talking about it than you think!
If you have an iPhone, you can easily access your call history and view the calls you have made. To view calls made from your iPhone, open the phone app and tap on the Recents tab at the bottom of the screen. This will show a list of all incoming and outgoing calls that have been made from your phone. You can scroll through this list to see when each call was made and who it was to. If you have connected your contacts list to your phone, then their name will appear beside the number. To get more information about a call, just tap on it and you’ll be able to see how long it lasted for and any notes that were taken about that particular call.
You can also search through your call history using the search bar at the top of the screen. This allows you to quickly find a specific person or number that may have called you in the past. If you’re looking for a particular call, just type in their name or number and all related calls should appear in the list below. You can then view more details about each one if needed.
If you want to delete any of your calls from appearing on this list, then just swipe left on them and tap ‘Delete’ when prompted. This will stop them from appearing on this list but won’t actually delete them completely – they will still be stored in iCloud as part of your backup records.
So if you are an iPhone user who has been wondering how to see who hung up on you, now you know! There are many ways to do this. You can use the call log in the Phone app, the Recents tab in the FaceTime app, or third-party apps that offer more detailed analytics for incoming and outgoing calls. Whichever option you choose, it is always good to keep track of who called and when. Having this knowledge will help protect your privacy and give you peace of mind.
In conclusion, being able to see who hung up on an iPhone is not as difficult as it may seem. With a few simple steps, you can easily access the call log or third-party apps to view incoming and outgoing calls. The ability to monitor your incoming and outgoing calls can be very helpful in protecting your privacy and keeping yourself informed.
from https://mooflair.com/how-to-see-who-hung-up-on-iphone-4/
A self-hosted dashboard that puts all your feeds in one place。
Install • Configuration • Preconfigured pages • Themes • Discord
Checkout the configuration docs to learn more. A preconfigured page is also available to get you started quickly.
Caution
The project is under active development, expect things to break every once in a while.
Checkout the releases page for available binaries. You can place the binary inside /opt/glance/
and have it start with your server via a systemd service. To specify a different path for the config file use the --config
option:
/opt/glance/glance --config /etc/glance.yml
Important
Make sure you have a valid glance.yml
file in the same directory before running the container.
docker run -d -p 8080:8080 \
-v ./glance.yml:/app/glance.yml \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
glanceapp/glance
Or if you prefer docker compose:
services:
glance:
image: glanceapp/glance
volumes:
- ./glance.yml:/app/glance.yml
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- 8080:8080
restart: unless-stopped
Requirements: Go >= v1.22
To build:
go build -o build/glance .
To run:
go run .
Build the image:
Make sure to replace "owner" with your name or organization.
docker build -t owner/glance:latest .
Push the image to your registry:
docker push owner/glance:latest
from https://github.com/glanceapp/glance/
-------------------------------------
几个月前了解到Glance这个项目,一直都想找个时间好好折腾一下,当时就觉得这个程序很符合我平时的上网习惯,基本可以把我平时上网要看的东西都能整合在一个页面里面。
然后我就按自己的习惯搓了个配置文件,最终效果:
话不多说,开始部署:
apt -y update
apt -y install curl wget nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
准备目录新建compose文件:
mkdir -p /opt/glance && cd /opt/glance && nano docker-compose.yml
写入如下配置:
services:
glance:
image: glanceapp/glance
restart: unless-stopped
volumes:
- ./glance.yml:/app/glance.yml
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- 8081:8080
新建glance.yml配置文件:
nano glance.yml
我的配置如下:
theme:
background-color: 225 14 15
primary-color: 157 47 65
contrast-multiplier: 1.1
pages:
- name: Home
columns:
- size: small
widgets:
- type: clock
hour-format: 24h
timezones:
- timezone: Etc/UTC
label: MapleStory Game Time
- timezone: Asia/Shanghai
label: Shanghai
- timezone: America/New_York
label: New York
- type: calendar
- type: twitch-channels
channels:
- ereklo_game
- niru
- duky
- scardor
- isiinggunz
- sacrix
- type: twitch-top-games
exclude:
- just-chatting
- pools-hot-tubs-and-beaches
- music
- art
- asmr
- size: full
widgets:
- type: search
search-engine: google
bangs:
- title: YouTube
shortcut: "!yt"
url: https://www.youtube.com/results?search_query={QUERY}
- type: monitor
cache: 1m
style: dynamic-columns-experimental
title: Services
sites:
- title: Vaultwarden
url: https://vaultwarden.example.com/
icon: si:vaultwarden
- title: ProxmoxVE
url: https://pve.example.com:8006/
icon: si:proxmox
allow-insecure: true
- title: WordPress
url: https://mydomain.com
icon: si:wordpress
- title: Chevereto
url: https://img.xxoo.zip/
icon: si:coil
- type: rss
limit: 10
collapse-after: 3
cache: 3h
style: detailed-list
feeds:
- url: https://mydomain.com/feed
title: 荒岛
- type: reddit
subreddit: selfhosted
style: horizontal-cards
- type: reddit
subreddit: China_irl
style: horizontal-cards
- type: videos
channels:
- UCBKDRq35-L8xev4O7ZqBeLg # wangzhian
- UCiL5EGUQfROCmRokN2q1LCg # xumouren
- UCIXOIjR2mp8tHz78DE0vj2A # xuxiaodong
- UCcOCpJNG2hR0wohtBVdeshA # ms
limit: 25
collapse-after-rows: 2
style: grid-cards
- size: small
widgets:
- type: weather
location: Wuhan, China
- type: bookmarks
groups:
- links:
- title: Google
url: https://google.com/
- title: Github
url: https://github.com/
- title: Hostloc
url: https://hostloc.com/
- title: Nodeseek
url: https://www.nodeseek.com/
- title: Linuxdo
url: https://linux.do/
- title: V2ex
url: https://www.v2ex.com/
- title: Entertainment
color: 10 70 50
links:
- title: Bilibli
url: https://www.bilibili.com/
- title: YouTube
url: https://www.youtube.com/
- title: Netflix
url: https://www.netflix.com/
- title: Disney+
url: https://www.disneyplus.com/
- title: Social
color: 200 50 50
links:
- title: Reddit
url: https://www.reddit.com/
- title: Twitter
url: https://twitter.com/
- type: releases
repositories:
- immich-app/immich
- dani-garcia/vaultwarden
- misskey-dev/misskey
- SagerNet/sing-box
- XTLS/Xray-core
- stalwartlabs/mail-server
- bitmagnet-io/bitmagnet
- Paymenter/Paymenter
- ConvoyPanel/panel
- type: repository
repository: stalwartlabs/mail-server
pull-requests-limit: 5
issues-limit: 3
简单介绍一下我这个配置:
1、时间这块我配置了一个UTC时间,因为我平时玩MapleStory,这个游戏里面的时间比北京时间晚8个小时,这样我就可以及时知道游戏内的活动到期时间、物品过期时间了,随时提醒我上线= =
2、关注了几个在Twitch玩MapleStory的游戏主播,我平时有事没事也会看看这几个人的直播,这样开播的时候我能第一时间看到。
玩GMS谁能不认识niru(全世界第一个300级的男人,睡着了都还在电脑前刷怪233)还有duky,这货也是搞笑,之前自己弄了个外挂出来可以卡已经被删除的轮回石碑效果,然后弄个小号在地图里面挂着,大号就在地图里面刷怪体验轮回效果,然后GM把他号BAN了还开直播装无辜= =
3、RSS这个没什么好说的,订阅自己喜欢的站点。这里只是演示,我就只订阅了我自己的这个博客。
4、Reddit我配置了selfhosted、china_irl,这是我平时最常逛的两个版块了。这里要注意的是,Reddit把很多机房(数据中心)的IP都拉黑了,如果你搭建Glance的机器无法访问Reddit就会有类似这样的报错:
我自己搭建的这台服务器就是IP被Reddit拉黑了,但是经过我的一番折腾已经完美解决了,步骤有点多,我会单独写一篇文章说明,这里先不说了。
5、Glance还支持关注Youtube的频道,我也是把自己常看的几个频道加进去了。配置的时候需要对应频道的ID,可以参考这里:https://github.com/glanceapp/glance/blob/main/docs/configuration.md#videos 获取。
6、天气这个也没什么好说的,只能说武汉这b天气真的可以热死人,太阳底下的车屁股温度可以达到80多度。。
7、书签功能,配置了几个我平时常看的网站。
8、关注了几个Github的存储库,可以把自己比较关注的项目配置上去,这样项目有任何更改,都能第一时间看到。卧槽,这功能简直绝了!
9、搜索功能,默认使用Google搜索,还支持使用短代码临时切换搜索,比如先输入!yt,然后再输入搜索词的话,那么就是在Youtube上搜索了。
10、服务可用性监控,可以把自建的服务配置上去,随时监测服务的健康状态。
更多配置,可以查看官方的文档:https://github.com/glanceapp/glance/blob/main/docs/configuration.md
总而言之就是Glance是一个高度可自定义的个人homepage。完全可以根据你的个人需求来自定义,达到一个百花齐放的效果。
启动:
docker compose up -d
配置NGINX反向代理:
nano /etc/nginx/sites-available/glacne
写入如下配置:
server {
listen 80;
listen [::]:80;
server_name glance.example.com;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto "https";
client_max_body_size 0;
}
}
启用站点:
ln -s /etc/nginx/sites-available/glance /etc/nginx/sites-enabled/glance
Next generation noIM application in your own workspace, not only another Slack/Discord/Rocket.chat
If you are interested in the concept of noIM
, welcome to read my blog:
Official Documentation: https://tailchat.msgbyte.com/
Nightly version Try it online: https://nightly.paw.msgbyte.com/
Nightly version is the automatic compile version, that means, every commit code will be automatically compiled. The reliability and stability of the data are not guaranteed, you can deploy with stable version with docker images or github release page
At present, the existing IM applications only focus on chatting itself, and IM is naturally a multi-person collaboration method. In my opinion, it should be able to take on more responsibilities, and form its own unique way of forwarding external applications through IM workflow.
Therefore, I bring up the point of noIM
, which means Not only IM.
Instead, it designed a highly customized application platform for
individuals/teams centered on IM, with third-party applications as
enhanced functions, and a plugin system as the glue connection layer in
the middle.
To this end, the functions were abstracted, and a lot of
time was spent designing the underlying mechanism. An instant messaging
application such as Tailchat
was born for expansion from the beginning of the underlying design. Through Tailchat
's plugin system, developers can easily use their favorite applications as part of Tailchat
in a very natural way. Different from traditional integration methods such as Slack
, the integration of Tailchat
is more free, as if it is a native function.
Tailchat
can be created for different scenarios. It can be for individuals or for enterprisesLearn more in our website
Tailchat is a modern open source IM application which based on React + Typescript
Front-end microkernel architecture + backend microservice architecture, Tailchat
is ready for clustering deployment.
The front end empowers the application through the plugin
system, which is very simple and easy to expand for the secondary
development of Tailchat
.
NOTICE: Although the core functionality of Tailchat is currently in a stable stage, its exposed interface for third-party developers is still being improved. Generally speaking, it is backward compatible, but retains the possibility of Break Change
Visit the official website to learn more: https://tailchat.msgbyte.com/
If you are interested in Tailchat
, welcome to join Tailchat
's seed user exchange group, your feedback can help Tailchat
grow better
from https://github.com/msgbyte/tailchat
------
The content of this chapter requires you to have a certain degree of understanding of nodejs, git, linux. When there are problems such as dependency problems, environmental problems, system problems, etc., you need to have the ability to solve and troubleshoot problems by yourself.
If you do not understand this, it is not recommended that you use the contents of this chapter for deployment. It is recommended to use a unified image for deployment.
mkdir msgbyte && cd msgbyte
git clone https://github.com/msgbyte/tailchat.git
Because the cloned code is the latest code, it may be unstable for a short period of time, so if you want to switch to the stable code of each version, you can use the tag function of git
For example, if you wanna use v1.7.6
, you can use the command:
git checkout v1.7.6
Tailchat is a front-end and back-end separated project. So we have to deal with the front-end code and the back-end code separately
We assume you have installed nodejs v16.18.0+
or above. And installed pnpm v8.3.1
or above
cd tailchat
pnpm install
This command will take some time to install all the dependencies of Tailchat. When the installation is complete, the internal plug-in will automatically execute the compilation command.
NODE_ENV=production pnpm build
This
command will execute the commands for compiling the front-end and
back-end management terminals in parallel. And move the front-end
product to the server/dist/public
directory of the server.
When the project is built, our product can run normally.
Please build in macos
/ linux
environment as much as possible, window does not necessarily fully support shell commands.
In order to ensure the horizontal expansion of the project, although the core code of Tailchat
is written in the same project, it can be divided into multiple
subdivided microservices when it is actually started. Selectively enable
different services by passing in a combination of different environment
variables.
Create an environment variable file in the server directory using the .env.example
directory as an example:
cp server/.env.example server/dist/.env
vim .env
Modify the necessary environment variables to your own, such as MONGO_URL
, REDIS_URL
, MINIO_URL
then start the service
SERVICEDIR=services,plugins pnpm start:service
SERVICEDIR
indicates the directory where the microservice is loaded.
from https://tailchat.msgbyte.com/docs/deployment/other-way/manual
An interesting open source chat application. Developed with node.js, mongoDB, socket.io and react.
Fiora is an interesting open source chat application. It is developed based on node.js, react and socket.io technologies
Online Example: https://fiora.suisuijiang.com/
Documentation: https://yinxin630.github.io/fiora/
Fiora provides two ways to install
You can find the Fiora changelog on the website
from https://github.com/yinxin630/fiora
--------------------------------------------------
To run Fiora, you need Node.js(recommend v14 LTS version), MongoDB and redis
Recommended to running on Linux or MacOS systems
git clone https://github.com/yinxin630/fiora.git -b master
npm install -g yarn
yarn install
yarn build:web
echo "JwtSecret=<string>" > .env2
. Change <string>
to a secret textyarn start
http://[ip]:[port]
(such as http://127.0.0.1:9200
) in browserUsing yarn start
to run the server will stop running after disconnecting the ssh connection, it is recommended to use pm2 to run
yarn dev:server
yarn dev:web
http://localhost:8080
in browserFirst install docker https://docs.docker.com/install/
git clone https://github.com/yinxin630/fiora.git -b master
docker-compose build --no-cache --force-rm
docker-compose up
from https://yinxin630.github.io/fiora/docs/install/
这款 proxy 呢,可以通过公网服务器访问内网主机,目前仅支持tcp流量转发,是的,需要借助公网服务器,但是不需要把本机的服务部署在公网,这个还是会减少很多工作量的,而且大家也知道,云服务器的资源那是大大的宝贵,当然网上流行的内网穿透,不借助公网服务器,直接穿透内网,以LZ的网络知识,我只想说很难,而且这个在不同的网络环境下影响很大,极大可能性就是不稳定。
proxy 最开始的版本是通过端口转发的,但是这样就需要不同的服务绑定不同的端口,这无疑是一种资源浪费,同时需要开放公网服务器的端口,这样也不好,现在呢可以通过域名转发,同时也可以配合nginx来使用。
上面呢就是proxy的工作模式,很多的代理软件模式都差不多是这样的,代理服务器和代理客户端呢通过私有的协议进行通信。
代理客户端先和代理服务器建立连接,代理服务器通过不同的域名(或端口)来区分具体的代理服务,用户通过访问代理服务器的指定域名(或端口),然后代理服务器将数据转发给代理客户端,客户端再转发数据给真实服务器,当客户端接收到真实服务器响应后,再传输给代理服务器,代理服务器再将数据传送给用户,完成一次请求。
(1)通过外网访问本机的mysql
- serverport: 3307
proxyType: tcp
realhost: 127.0.0.1
realhostport: 3306
description: mysql 代理
配置服务端,将服务端程序运行在公网服务器,同时开放3307端口,本地运行客户端(需要简要配置),这样通过外网ip或者域名访问其3307端口,便是访问内网本机的3306端口了。
(2)ssh 服务
- serverport: 2222
proxyType: tcp
realhost: 172.16.254.63
realhostport: 22
description: ssh 代理
配置服务端,将服务端程序运行在公网服务器,同时开放2222端口,本地运行客户端(需要简要配置),这样通过外网ip或者域名访问其2222端口,便是访问**内网本机(172.16.254.63)**的22端口了。
(3)域名转发
- domain: proxy.ztgreat.cn
proxyType: http
realhost: 127.0.0.1
realhostport: 8080
description: http代理
访问proxy.ztgreat.cn 实际访问的便是本机的8080端口.
通过域名转发,是共享的同一个端口(非80),这样需要入口配合nginx来使用.
代理客户端先和代理服务器建立连接,代理服务器通过不同的端口来区分具体的代理服务,用户通过访问代理服务器的指定端口,然后代理服务器将数据转发给代理客户端,客户端再转发数据给真实服务器,当客户端接收到真实服务器响应后,再传输给代理服务器,代理服务器再将数据传送给用户,完成一次请求。
from https://github.com/ztgreat/proxy
(https://github.com/ztgreat/proxy-cpp)
Lynis - Security auditing tool for Linux, macOS, and UNIX-based systems. Assists with compliance testing (HIPAA/ISO27001/PCI DSS) and system hardening. Agentless, and installation optional.
Lynis is a security auditing tool for systems based on UNIX like Linux, macOS, BSD, and others. It performs an in-depth security scan and runs on the system itself. The primary goal is to test security defenses and provide tips for further system hardening. It will also scan for general system information, vulnerable software packages, and possible configuration issues. Lynis was commonly used by system administrators and auditors to assess the security defenses of their systems. Besides the "blue team," nowadays penetration testers also have Lynis in their toolkit.
We believe software should be simple, updated on a regular basis, and open. You should be able to trust, understand, and have the option to change the software. Many agree with us, as the software is being used by thousands every day to protect their systems.
The main goals are:
The software (also) assists with:
Typical users of the software:
There are multiple options available to install Lynis.
For
systems running Linux, BSD, and macOS, there is typically a package
available. This is the preferred method of obtaining Lynis, as it is
quick to install and easy to update. The Lynis project itself also
provides packages in RPM or DEB format suitable for systems systems running:
CentOS
, Debian
, Fedora
, OEL
, openSUSE
, RHEL
, Ubuntu
, and others.
Some distributions may also have Lynis in their software repository:
Note: Some distributions don't provide an up-to-date version. In that case it is better to use the CISOfy software repository, download the tarball from the website, or download the latest GitHub release.
The very latest developments can be obtained via git.
Clone or download the project files (no compilation nor installation is required) ;
git clone https://github.com/CISOfy/lynis
Execute:
cd lynis && ./lynis audit system
If you want to run the software as root
(or sudo), we suggest changing the ownership of the files. Use chown -R 0:0
to recursively alter the owner and group and set it to user ID 0
(root
). Otherwise Lynis will warn you about the file permissions. After all, you are executing files owned by a non-privileged user.
This software component is also part of an enterprise solution. Same quality, yet with more functionality.
Focus areas include compliance (PCI DSS
, HIPAA
, ISO27001
, and others). The Enterprise version comes with:
Full documentation: https://cisofy.com/documentation/lynis/.
If you want to create your own tests, have a look at the Lynis software development kit.
We participate in the CII best practices badge program of the Linux Foundation.
Lynis is collecting some awards along the way and we are proud of that.
2016
2015
2014
2013