<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Heng's blog]]></title><description><![CDATA[Heng's blog]]></description><link>https://blog.hengg.foo</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 12:32:24 GMT</lastBuildDate><atom:link href="https://blog.hengg.foo/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Configuring IPv6 Through A Tunnel Broker Service]]></title><description><![CDATA[This how-to is for super-newbie and may depend on your system's OS, but it has already been tested on Ubuntu (22, 23 and 24) with netplan.
Hello Tunnelbroker!

Create an account at Tunnelbroker

Create a new Create Regular Tunnel

Enter your server I...]]></description><link>https://blog.hengg.foo/configuring-ipv6-through-a-tunnel-broker-service</link><guid isPermaLink="true">https://blog.hengg.foo/configuring-ipv6-through-a-tunnel-broker-service</guid><category><![CDATA[tunnelbroker]]></category><category><![CDATA[networking]]></category><category><![CDATA[ipv6]]></category><category><![CDATA[IPv4]]></category><dc:creator><![CDATA[Tang Heng]]></dc:creator><pubDate>Tue, 30 Jul 2024 02:23:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1722325812186/289d84cb-a1d6-4470-bfc5-5d41020c81fc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This how-to is for super-newbie and may depend on your system's OS, but it has already been tested on <code>Ubuntu (22, 23 and 24)</code> with <code>netplan</code>.</p>
<h3 id="heading-hello-tunnelbroker">Hello Tunnelbroker!</h3>
<ol>
<li><p>Create an account at <a target="_blank" href="https://tunnelbroker.net/">Tunnelbroker</a></p>
</li>
<li><p>Create a new <code>Create Regular Tunnel</code></p>
</li>
<li><p>Enter your server IPv4 and select the Tunnelbroker server with the lowest ping to your server. <code>ping</code><a target="_blank" href="http://xxx.xxx.xxx.xxx"><code>xxx.xxx.xxx.xxx</code></a></p>
</li>
<li><p>(Optional) Get IPv6 /48 block by clicking <code>assign /48</code></p>
</li>
<li><p>Go to <code>Example Configurations</code></p>
</li>
<li><p>Select <code>Linux (netplan 0.103+)</code></p>
</li>
<li><p>Copy the whole config</p>
</li>
</ol>
<p><mark>[WARNING]</mark> <code>xxxx</code> or <code>xxx</code> for example: <code>2001:470:xxxx:xxx::2/64</code> is just for censoring real information PLEASE REPLACE IT WITH YOUR IPV6</p>
<p>➥ <strong>Example configuration generated from</strong> <a target="_blank" href="http://tunnelbroker.net"><strong>tunnelbroker.net</strong></a></p>
<pre><code class="lang-yaml"><span class="hljs-attr">network:</span>
  <span class="hljs-attr">version:</span> <span class="hljs-number">2</span>
  <span class="hljs-attr">tunnels:</span>
    <span class="hljs-attr">he-ipv6:</span>
      <span class="hljs-attr">mode:</span> <span class="hljs-string">sit</span>
      <span class="hljs-attr">remote:</span> <span class="hljs-number">216.218</span><span class="hljs-number">.142</span><span class="hljs-number">.50</span>
      <span class="hljs-attr">local:</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.xxx</span>
      <span class="hljs-attr">addresses:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">"2001:470:xxxx:xxx::2/64"</span>
      <span class="hljs-attr">routes:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-attr">to:</span> <span class="hljs-string">default</span>
          <span class="hljs-attr">via:</span> <span class="hljs-string">"2001:470:xxxx:xxx::1"</span>
</code></pre>
<p>On your server, go to the netplan folder: <code>cd /etc/netplan</code></p>
<p>Create a new file using your choice of text editor, but in this how-to, we will be using nano. <code>nano 99-he-tunnel.yaml</code></p>
<p>Then paste the whole configuration into that file.</p>
<p>➥ <strong>Example configuration of 99-he-tunnel.yaml with /64</strong></p>
<pre><code class="lang-yaml"><span class="hljs-attr">network:</span>
  <span class="hljs-attr">version:</span> <span class="hljs-number">2</span>
  <span class="hljs-attr">tunnels:</span>
    <span class="hljs-attr">he-ipv6:</span>
      <span class="hljs-attr">mode:</span> <span class="hljs-string">sit</span>
      <span class="hljs-attr">remote:</span> <span class="hljs-number">216.218</span><span class="hljs-number">.142</span><span class="hljs-number">.50</span>
      <span class="hljs-attr">local:</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.xxx</span>
      <span class="hljs-attr">addresses:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">"2001:470:xxxx:xxx::2/64"</span>
      <span class="hljs-attr">routes:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-attr">to:</span> <span class="hljs-string">default</span>
          <span class="hljs-attr">via:</span> <span class="hljs-string">"2001:470:xxxx:xxx::1"</span>
</code></pre>
<p>➥ <strong>Example configuration of 99-he-tunnel.yaml with /48</strong></p>
<pre><code class="lang-yaml"><span class="hljs-attr">network:</span>
  <span class="hljs-attr">version:</span> <span class="hljs-number">2</span>
  <span class="hljs-attr">tunnels:</span>
    <span class="hljs-attr">he-ipv6:</span>
      <span class="hljs-attr">mode:</span> <span class="hljs-string">sit</span>
      <span class="hljs-attr">remote:</span> <span class="hljs-number">216.218</span><span class="hljs-number">.142</span><span class="hljs-number">.50</span>
      <span class="hljs-attr">local:</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.xxx</span>
      <span class="hljs-attr">addresses:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">"2001:470:xxxx::2/48"</span>
      <span class="hljs-attr">routes:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-attr">to:</span> <span class="hljs-string">default</span>
          <span class="hljs-attr">via:</span> <span class="hljs-string">"2001:470:xxxx::1"</span>
</code></pre>
<h3 id="heading-optional-you-already-had-ipv6-but-still-want-to-use-tunnelbroker">[Optional] You already had IPv6 but still want to use Tunnelbroker.</h3>
<p>Most hosting providers will have an OS image that is generated configuration called <code>50-cloud-init.yaml</code>.</p>
<p>Start edit that file: <code>nano 50-cloud-init.yaml</code></p>
<p>➥ <strong>Example configuration from 50-cloud-init.yaml</strong></p>
<pre><code class="lang-yaml"><span class="hljs-attr">network:</span>
    <span class="hljs-attr">ethernets:</span>
        <span class="hljs-attr">ens3:</span>
            <span class="hljs-attr">addresses:</span>
            <span class="hljs-bullet">-</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.xxx/23</span>
            <span class="hljs-bullet">-</span> <span class="hljs-number">2402</span><span class="hljs-string">:xxxx:xxxx::xx/128</span>
            <span class="hljs-bullet">-</span> <span class="hljs-number">2402</span><span class="hljs-string">:xxxx:xxxx:xxxx::a/56</span>
            <span class="hljs-attr">gateway4:</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.x</span>
            <span class="hljs-attr">gateway6:</span> <span class="hljs-number">2402</span><span class="hljs-string">:xxxx:xxxx::1</span>
            <span class="hljs-attr">match:</span>
                <span class="hljs-attr">macaddress:</span> <span class="hljs-number">00</span><span class="hljs-string">:34:a0:e1:de:5d</span>
            <span class="hljs-attr">nameservers:</span>
                <span class="hljs-attr">addresses:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-number">8.8</span><span class="hljs-number">.8</span><span class="hljs-number">.8</span>
                <span class="hljs-bullet">-</span> <span class="hljs-number">8.8</span><span class="hljs-number">.4</span><span class="hljs-number">.4</span>
                <span class="hljs-bullet">-</span> <span class="hljs-number">2001</span><span class="hljs-string">:4860:4860::8888</span>
                <span class="hljs-bullet">-</span> <span class="hljs-number">2001</span><span class="hljs-string">:4860:4860::8844</span>
            <span class="hljs-attr">routes:</span>
            <span class="hljs-bullet">-</span>   <span class="hljs-attr">scope:</span> <span class="hljs-string">link</span>
                <span class="hljs-attr">to:</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.x</span>
                <span class="hljs-attr">via:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span>
            <span class="hljs-bullet">-</span>   <span class="hljs-attr">scope:</span> <span class="hljs-string">link</span>
                <span class="hljs-attr">to:</span> <span class="hljs-number">2402</span><span class="hljs-string">:xxxx:xxxx::1</span>
                <span class="hljs-attr">via:</span> <span class="hljs-string">::0</span>
    <span class="hljs-attr">version:</span> <span class="hljs-number">2</span>
</code></pre>
<p>We will be removing</p>
<pre><code class="lang-yaml">            <span class="hljs-attr">addresses:</span>
            <span class="hljs-bullet">-</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.xxx/23</span>
            <span class="hljs-bullet">-</span> <span class="hljs-number">2402</span><span class="hljs-string">:xxxx:xxxx::xx/128</span> <span class="hljs-string">&lt;---</span>
            <span class="hljs-bullet">-</span> <span class="hljs-number">2402</span><span class="hljs-string">:xxxx:xxxx:xxxx::a/56</span> <span class="hljs-string">&lt;---</span>
            <span class="hljs-attr">gateway4:</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.x</span>
            <span class="hljs-attr">gateway6:</span> <span class="hljs-number">2402</span><span class="hljs-string">:xxxx:xxxx::1</span> <span class="hljs-string">&lt;---</span>
</code></pre>
<p>And</p>
<pre><code class="lang-yaml">            <span class="hljs-bullet">-</span>   <span class="hljs-attr">scope:</span> <span class="hljs-string">link</span> <span class="hljs-string">&lt;---</span>
                <span class="hljs-attr">to:</span> <span class="hljs-number">2402</span><span class="hljs-string">:xxxx:xxxx::1</span> <span class="hljs-string">&lt;---</span>
                <span class="hljs-attr">via:</span> <span class="hljs-string">::0</span> <span class="hljs-string">&lt;---</span>
</code></pre>
<p>Final configuration</p>
<pre><code class="lang-yaml"><span class="hljs-attr">network:</span>
    <span class="hljs-attr">ethernets:</span>
        <span class="hljs-attr">ens3:</span>
            <span class="hljs-attr">addresses:</span>
            <span class="hljs-bullet">-</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.xxx/23</span>
            <span class="hljs-attr">gateway4:</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.x</span>
            <span class="hljs-attr">match:</span>
                <span class="hljs-attr">macaddress:</span> <span class="hljs-number">00</span><span class="hljs-string">:34:a0:e1:de:5d</span>
            <span class="hljs-attr">nameservers:</span>
                <span class="hljs-attr">addresses:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-number">8.8</span><span class="hljs-number">.8</span><span class="hljs-number">.8</span>
                <span class="hljs-bullet">-</span> <span class="hljs-number">8.8</span><span class="hljs-number">.4</span><span class="hljs-number">.4</span>
                <span class="hljs-bullet">-</span> <span class="hljs-number">2001</span><span class="hljs-string">:4860:4860::8888</span>
                <span class="hljs-bullet">-</span> <span class="hljs-number">2001</span><span class="hljs-string">:4860:4860::8844</span>
            <span class="hljs-attr">routes:</span>
            <span class="hljs-bullet">-</span>   <span class="hljs-attr">scope:</span> <span class="hljs-string">link</span>
                <span class="hljs-attr">to:</span> <span class="hljs-number">195.</span><span class="hljs-string">xxx.xx.x</span>
                <span class="hljs-attr">via:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span>
    <span class="hljs-attr">version:</span> <span class="hljs-number">2</span>
</code></pre>
<h3 id="heading-applying-netplan-and-checking-your-ipv6">Applying netplan and checking your IPv6</h3>
<p>Let try our new configuration: <code>netplan try</code></p>
<p>Ignore the warning and if there is no error then just press enter to accept new configuration.</p>
<p>Reboot server one time: <code>reboot</code></p>
<p>Try your IPv6 from Tunnelbroker: <code>ping6 google.com</code> Try curl to make sure that it is Tunnelbroker IPv6: <code>curl -6 https://ifconfig.co</code> And it should return <code>2001:470:xxxx:xxx::2</code> or <code>2001:470:xxxx::2</code> if you are using /48</p>
<p>Next, we're going to configure IPv6 for your system. Enable non local binding <code>sysctl -w net.ipv6.ip_nonlocal_bind=1</code> And so the next time you don't need to type it again <code>echo 'net.ipv6.ip_nonlocal_bind = 1' &gt;&gt; /etc/sysctl.conf</code></p>
<p>Now, we replace this command with our IPv6 from Tunnelbroker. <code>ip -6 route replace local 2001:470:xxxx:xxx::/64 dev lo</code> or if you are using /48 <code>ip -6 route replace local 2001:470:xxxx::/48 dev lo</code></p>
<p><strong>Now test your new configuration</strong></p>
<p>using /64</p>
<pre><code class="lang-yaml"><span class="hljs-string">ping6</span> <span class="hljs-string">-I</span> <span class="hljs-number">2001</span><span class="hljs-string">:470:xxxx:xxx:dead::beef</span> <span class="hljs-string">google.com</span>
</code></pre>
<p>or if you are using /48</p>
<pre><code class="lang-yaml"><span class="hljs-string">ping6</span> <span class="hljs-string">-I</span> <span class="hljs-number">2001</span><span class="hljs-string">:470:xxxx:dead::beef</span> <span class="hljs-string">google.com</span>
</code></pre>
<p><strong>congratulations</strong>🎉, Now you can use your new IPv6 <code>2001:470:xxxx:xxx::/64</code> or <code>2001:470:xxxx::/48</code>.</p>
]]></content:encoded></item><item><title><![CDATA[How to make lavalink server.]]></title><description><![CDATA[⚠
This article may contain outdated information. Both the extension and this article will be removed in the future.


What are we doing today?Welcome to the Lavalink Getting Started guide. If you're new to Lavalink, follow these steps to get started:...]]></description><link>https://blog.hengg.foo/how-to-make-lavalink-server</link><guid isPermaLink="true">https://blog.hengg.foo/how-to-make-lavalink-server</guid><category><![CDATA[#codenewbies]]></category><dc:creator><![CDATA[Tang Heng]]></dc:creator><pubDate>Mon, 24 Jun 2024 08:19:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1719218614206/22d157f0-6398-4d70-b6f1-c76c2a4fa5cf.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div data-node-type="callout">
<div data-node-type="callout-emoji">⚠</div>
<div data-node-type="callout-text"><mark>This article may contain outdated information. Both the extension and this article will be removed in the future.</mark></div>
</div>

<details><summary>What are we doing today?</summary><div data-type="detailsContent">Welcome to the Lavalink Getting Started guide. If you're new to Lavalink, follow these steps to get started:</div></details>

<h3 id="heading-lavalink-the-nehttpsgithubcomfreyacodeslavalinkwer-better-way-to-do-music"><strong>Lavalink</strong> <a target="_blank" href="https://github.com/freyacodes/Lavalink"><strong>- the ne</strong></a><strong>wer, better way to do music</strong></h3>
<p><a target="_blank" href="https://github.com/lavalink-devs/Lavalink">Lavalink</a> is a standalone program, written in Java. It's a lightweight solution for playing music from sources such as YouTube or Soundcloud. Unlike raw voice solutions, such as VoiceNext, Lavalink can handle hundreds of concurrent streams, and supports sharding.</p>
<h2 id="heading-configuring-java"><strong>Configuring Java</strong></h2>
<p>In order to run Lavalink, you must have Java 13 or greater installed. Certain Java versions may not be functional with Lavalink, so it is best to check the <a target="_blank" href="https://github.com/lavalink-devs/Lavalink#requirements">Requirements</a> before downloading. The latest releases can be found <a target="_blank" href="https://adoptium.net/">here</a>.</p>
<p>Make sure the location of the newest JRE's bin folder is added to your system variable's path. This will make the <code>java</code> command run from the latest runtime. You can verify that you have the right version by entering <code>java -version</code> in your command prompt or terminal.</p>
<h2 id="heading-downloading-lavalink"><strong>Downloading Lavalink</strong></h2>
<p>Next, head over to the <a target="_blank" href="https://github.com/lavalink-devs/Lavalink/releases">releases</a> tab on the Lavalink GitHub page and download the Jar file from the latest version. Alternatively, stable builds with the latest changes can be found on their <a target="_blank" href="https://ci.fredboat.com/viewLog.html?buildId=lastSuccessful&amp;buildTypeId=Lavalink_Build&amp;tab=artifacts&amp;guest=1">CI Server</a>.</p>
<p>The program will not be ready to run yet, as you will need to create a configuration file first. To do so, create a new YAML file called <code>application.yml</code>, and use the <a target="_blank" href="https://github.com/freyacodes/Lavalink/blob/master/LavalinkServer/application.yml.example">example file,</a> or copy this text:</p>
<pre><code class="lang-yaml"><span class="hljs-attr">server:</span> <span class="hljs-comment"># REST and WS server</span>
  <span class="hljs-attr">port:</span> <span class="hljs-number">2333</span>
  <span class="hljs-attr">address:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span>
  <span class="hljs-attr">http2:</span>
    <span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span> <span class="hljs-comment"># Whether to enable HTTP/2 support</span>
<span class="hljs-attr">plugins:</span>
<span class="hljs-comment">#  name: # Name of the plugin</span>
<span class="hljs-comment">#    some_key: some_value # Some key-value pair for the plugin</span>
<span class="hljs-comment">#    another_key: another_value</span>
<span class="hljs-attr">lavalink:</span>
  <span class="hljs-attr">plugins:</span>
<span class="hljs-comment">#    - dependency: "com.github.example:example-plugin:1.0.0" # required, the coordinates of your plugin</span>
<span class="hljs-comment">#      repository: "https://maven.example.com/releases" # optional, defaults to the Lavalink releases repository by default</span>
<span class="hljs-comment">#      snapshot: false # optional, defaults to false, used to tell Lavalink to use the snapshot repository instead of the release repository</span>
<span class="hljs-comment">#  pluginsDir: "./plugins" # optional, defaults to "./plugins"</span>
<span class="hljs-comment">#  defaultPluginRepository: "https://maven.lavalink.dev/releases" # optional, defaults to the Lavalink release repository</span>
<span class="hljs-comment">#  defaultPluginSnapshotRepository: "https://maven.lavalink.dev/snapshots" # optional, defaults to the Lavalink snapshot repository</span>
  <span class="hljs-attr">server:</span>
    <span class="hljs-attr">password:</span> <span class="hljs-string">"youshallnotpass"</span>
    <span class="hljs-attr">sources:</span>
      <span class="hljs-comment"># The default Youtube source is now deprecated and won't receive further updates. Please use https://github.com/lavalink-devs/youtube-source#plugin instead.</span>
      <span class="hljs-attr">youtube:</span> <span class="hljs-literal">false</span>
      <span class="hljs-attr">bandcamp:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">soundcloud:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">twitch:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">vimeo:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">nico:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">http:</span> <span class="hljs-literal">true</span> <span class="hljs-comment"># warning: keeping HTTP enabled without a proxy configured could expose your server's IP address.</span>
      <span class="hljs-attr">local:</span> <span class="hljs-literal">false</span>
    <span class="hljs-attr">filters:</span> <span class="hljs-comment"># All filters are enabled by default</span>
      <span class="hljs-attr">volume:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">equalizer:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">karaoke:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">timescale:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">tremolo:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">vibrato:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">distortion:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">rotation:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">channelMix:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">lowPass:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">bufferDurationMs:</span> <span class="hljs-number">400</span> <span class="hljs-comment"># The duration of the NAS buffer. Higher values fare better against longer GC pauses. Duration &lt;= 0 to disable JDA-NAS. Minimum of 40ms, lower values may introduce pauses.</span>
    <span class="hljs-attr">frameBufferDurationMs:</span> <span class="hljs-number">5000</span> <span class="hljs-comment"># How many milliseconds of audio to keep buffered</span>
    <span class="hljs-attr">opusEncodingQuality:</span> <span class="hljs-number">10</span> <span class="hljs-comment"># Opus encoder quality. Valid values range from 0 to 10, where 10 is best quality but is the most expensive on the CPU.</span>
    <span class="hljs-attr">resamplingQuality:</span> <span class="hljs-string">LOW</span> <span class="hljs-comment"># Quality of resampling operations. Valid values are LOW, MEDIUM and HIGH, where HIGH uses the most CPU.</span>
    <span class="hljs-attr">trackStuckThresholdMs:</span> <span class="hljs-number">10000</span> <span class="hljs-comment"># The threshold for how long a track can be stuck. A track is stuck if does not return any audio data.</span>
    <span class="hljs-attr">useSeekGhosting:</span> <span class="hljs-literal">true</span> <span class="hljs-comment"># Seek ghosting is the effect where whilst a seek is in progress, the audio buffer is read from until empty, or until seek is ready.</span>
    <span class="hljs-attr">youtubePlaylistLoadLimit:</span> <span class="hljs-number">6</span> <span class="hljs-comment"># Number of pages at 100 each</span>
    <span class="hljs-attr">playerUpdateInterval:</span> <span class="hljs-number">5</span> <span class="hljs-comment"># How frequently to send player updates to clients, in seconds</span>
    <span class="hljs-attr">youtubeSearchEnabled:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">soundcloudSearchEnabled:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">gc-warnings:</span> <span class="hljs-literal">true</span>
    <span class="hljs-comment">#ratelimit:</span>
      <span class="hljs-comment">#ipBlocks: ["1.0.0.0/8", "..."] # list of ip blocks</span>
      <span class="hljs-comment">#excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink</span>
      <span class="hljs-comment">#strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch</span>
      <span class="hljs-comment">#searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing</span>
      <span class="hljs-comment">#retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | &gt;0 = retry will happen this numbers times</span>
    <span class="hljs-comment">#youtubeConfig: # Required for avoiding all age restrictions by YouTube, some restricted videos still can be played without.</span>
      <span class="hljs-comment">#email: "" # Email of Google account</span>
      <span class="hljs-comment">#password: "" # Password of Google account</span>
    <span class="hljs-comment">#httpConfig: # Useful for blocking bad-actors from ip-grabbing your music node and attacking it, this way only the http proxy will be attacked</span>
      <span class="hljs-comment">#proxyHost: "localhost" # Hostname of the proxy, (ip or domain)</span>
      <span class="hljs-comment">#proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy</span>
      <span class="hljs-comment">#proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth</span>
      <span class="hljs-comment">#proxyPassword: "" # Password for basic authentication</span>

<span class="hljs-attr">metrics:</span>
  <span class="hljs-attr">prometheus:</span>
    <span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
    <span class="hljs-attr">endpoint:</span> <span class="hljs-string">/metrics</span>

<span class="hljs-attr">sentry:</span>
  <span class="hljs-attr">dsn:</span> <span class="hljs-string">""</span>
  <span class="hljs-attr">environment:</span> <span class="hljs-string">""</span>
<span class="hljs-comment">#  tags:</span>
<span class="hljs-comment">#    some_key: some_value</span>
<span class="hljs-comment">#    another_key: another_value</span>

<span class="hljs-attr">logging:</span>
  <span class="hljs-attr">file:</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./logs/</span>

  <span class="hljs-attr">level:</span>
    <span class="hljs-attr">root:</span> <span class="hljs-string">INFO</span>
    <span class="hljs-attr">lavalink:</span> <span class="hljs-string">INFO</span>

  <span class="hljs-attr">request:</span>
    <span class="hljs-attr">enabled:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">includeClientInfo:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">includeHeaders:</span> <span class="hljs-literal">false</span>
    <span class="hljs-attr">includeQueryString:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">includePayload:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">maxPayloadLength:</span> <span class="hljs-number">10000</span>


  <span class="hljs-attr">logback:</span>
    <span class="hljs-attr">rollingpolicy:</span>
      <span class="hljs-attr">max-file-size:</span> <span class="hljs-string">1GB</span>
      <span class="hljs-attr">max-history:</span> <span class="hljs-number">30</span>
</code></pre>
<p>YAML is whitespace-sensitive. Make sure you are using a text editor which properly handles this. There are a few values to keep in mind.</p>
<p><code>host</code> is the IP of the Lavalink host. This will be <code>0.0.0.0</code> by default, but it should be changed as it is a security risk. For this guide, set this to <code>127.0.0.1</code> as we will be running Lavalink locally.</p>
<p><code>port</code> is the allowed port for the Lavalink connection. <code>2333</code> is the default port, and is what will be used for this guide.</p>
<p><code>password</code> is the password that you will need to specify when connecting. This can be anything as long as it is a valid YAML string. Keep it as <code>youshallnotpass</code> for this guide.</p>
<p>When you are finished configuring this, save the file in the same directory as your Lavalink executable.</p>
<p>Keep note of your <code>port</code>, <code>address</code>, and <code>password</code> values, as you will need them later for connecting.</p>
<h2 id="heading-starting-lavalink"><strong>Starting Lavalink</strong></h2>
<p>Open your command prompt or terminal and navigate to the directory containing Lavalink. Once there, type <code>java -jar Lavalink.jar</code>. You should start seeing log output from Lavalink.</p>
<p>If everything is configured properly, you should see this appear somewhere in the log output without any errors:</p>
<pre><code class="lang-yaml">[<span class="hljs-string">main</span>] <span class="hljs-attr">lavalink.server.Launcher:</span> <span class="hljs-string">Started</span> <span class="hljs-string">Launcher</span> <span class="hljs-string">in</span> <span class="hljs-number">5.769</span> <span class="hljs-string">seconds</span> <span class="hljs-string">(JVM</span> <span class="hljs-string">running</span> <span class="hljs-string">for</span> <span class="hljs-number">6.758</span><span class="hljs-string">)</span>
</code></pre>
<p>If it does, congratulations🎉. We are now ready to interact with it using DSharpPlus.</p>
]]></content:encoded></item><item><title><![CDATA[Horizxon Limited]]></title><description><![CDATA[Horizxon Limited isn't just a name, it's the future I'm building. This dream tech company that started in 2021 represents the potential to revolutionize the industry, a blank canvas waiting to be splashed with innovation.

✦ For me, Horizxon Limited ...]]></description><link>https://blog.hengg.foo/horizxon-limited</link><guid isPermaLink="true">https://blog.hengg.foo/horizxon-limited</guid><category><![CDATA[Company]]></category><dc:creator><![CDATA[Tang Heng]]></dc:creator><pubDate>Mon, 24 Jun 2024 07:34:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1723528530285/0dd8a615-274a-4d80-9415-629ec8bf7176.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a target="_blank" href="https://horizxon.tech"><strong>Horizxon Limited</strong></a> isn't just a name, it's the future I'm building. This dream tech company that started in 2021 represents the potential to revolutionize the industry, a blank canvas waiting to be splashed with innovation.</p>
<blockquote>
<p><strong>✦ For me, Horizxon Limited isn't just a company.</strong></p>
<h3 id="heading-vision"><strong>Vision</strong></h3>
<p>It's the tech horizon I'm determined to reach. While others might not see it yet, I have an unwavering belief in its potential to become a major player. It's like a seedling with the potential to become a mighty oak, and I'm dedicated to nurturing its growth and future success.</p>
<h3 id="heading-evolution"><strong>Evolution</strong></h3>
<p>The journey from a small project to a larger imagination. My dream of starting my own company has been with me since high school. Back in 2021, I even started a small project named Cruz Studios with a friend of mine, Sya. Cruz Studios was a modest Discord community with over 3500 people, which I eventually traded for a game account.🤦‍♂️</p>
<h3 id="heading-potentialized"><strong>Potentialized</strong></h3>
<p>Horizxon Limited is now more than just a project, it's a fresh start. Unlike the past, I'm laser-focused and energized to make it work. With discipline and new ideas, Horizxon is poised to finally reach its full potential.</p>
</blockquote>
<p><img src="https://media.hengnation.eu/hNt.jpg" alt class="image--center mx-auto" /></p>
]]></content:encoded></item></channel></rss>